1 Провести минимальное количество прямых через столбцы и строки матрицы таким образом, чтобы они проходили через все нули, содержащиеся в таблице 2 Найти наименьший из элементов, через которые не проходит ни одна прямая 3 Вычесть его из всех элементов, через которые не проходят прямые 4 Прибавить его ко всем элементам, лежащим на пересечении прямых 5 Элементы, через которые проходит только одна прямая, оставить неизменными
program z; uses crt; var mart: array [1..100, 1.. 100] of integer; i,ii,m:integer;
procedure lines; var max_a, max_b, counter: integer;
begin
for i:=1 to m do for ii:=1 to m do if matr[i,ii]=0 then inc(counter); if counter=0 then break else
max_b:=0; counter:=0;
{максимальное кол-во нулей по строкам} for i:=1 to m do begin for ii:=1 to m do if matr[i,ii]=0 then inc(counter); if counter>max_b then begin max_b:=counter; b:=ii; {запоминаем строку} counter:=0; end; end;
max_a:=0; {максимальное кол-во нулей по столбцам} for ii:=1 to m do begin for i:=1 to m do if matr[i,ii]=0 then inc(counter); if counter>max_a then begin max_a:=counter; a:=i; {запоминаем столбец} counter:=0; end; end;
{ если максимально кол-во нулей по строкам больше максимального кол-ва нулей по столбцам, "вычеркиваем" строку и наоборот } if max_a<max_b then begin for i:=1 to m do if matr[i,b]=0 then matr[i,b]:=matr[i,b]*100; end else begin for ii:=1 to m do if matr[a,ii]=0 then matr[a,ii]:=matr[a,ii]*100; end;
lines; end;
procedure steps; var min: integer;
begin {поиск минимального элемента} min:=100; for i:=1 to m do for ii:=1 to m do if matr[i,ii]<min then min:=matr[i,ii];
{вычитаем минимальный элемент из незачеркнутых элементов матрицы} for i:=1 to m do for ii:=1 to m do if a[i,ii]<100 then a[i,ii]:=a[i,ii]-min;
{прибавляем минимальный элемент к элементам, находящимся на пересечении прямых} for i:=1 to m do for ii:=1 to m do if a[i,ii]>=10000 then a[i,ii]:=a[i,ii]/10000+min
{возвращаем "зачеркнутым" посредством умножения на 100 элементам их исходное значение} for i:=1 to m do for ii:=1 to m do if a[i,ii]>=100 then a[i,ii]:=a[i,ii]/100. end;
begin lines; steps; end.
чувствую, что здесь косяков ой как много.. особенно с тем, что я пыталась оформить рекурсией..
да, я не писала вводы-выводы матрицы, но это ведь не суть.