Элемент матрицы назовем седловой точкой,если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или,наоборот,является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матри...

Элемент матрицы назовем седловой точкой,если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или,наоборот,является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером n*m напечатать индексы всех ее седловых точек.
Гость
Ответ(ы) на вопрос:
Гость
const   n = 4;   m = 6; var   a: array[1..n, 1..m] of integer;  // основной массив   Rext: array[1..n, 1..2] of integer; // номера столбцов с min и max в строках   Cext: array[1..2, 1..m] of integer; // номера строк с min и max в столбцах   i, j, amin, amax: integer; begin   // заполняем массив А случайными числами   Randomize;   writeln('Исходный массив');   for i := 1 to n do   begin     for j := 1 to m do     begin       a[i, j] := random(100) - 50;       write(a[i, j]:4);     end;     writeln;   end;   // Заполняем массив Rext n x 2   for i := 1 to n do   begin     amin := 10000;  //заведомо больше a[i,j]     amax := -10000; //заведомо меньше a[i,j]     for j := 1 to m do     begin       if amin > a[i, j] then begin         amin := a[i, j]; Rext[i, 1] := j       end;       if amax < a[i, j] then begin         amax := a[i, j]; Rext[i, 2] := j       end     end;   end;   // Заполняем массив Cext 2 x m   for j := 1 to m do   begin     amin := 10000;  //заведомо больше a[i,j]     amax := -10000; //заведомо меньше a[i,j]     for i := 1 to n do     begin       if amin > a[i, j] then begin         amin := a[i, j]; Cext[1, j] := i       end;       if amax < a[i, j] then begin         amax := a[i, j]; Cext[2, j] := i       end     end   end;   writeln;   // Ищем седловые точки   writeln('*** Седловые точки ***');   for i := 1 to n do   begin     j := Rext[i, 1];     if Cext[2, j] = i then       write('[', i, ',', j, '] ')     else begin       j := Rext[i, 2];       if Cext[1, j] = i then         write('[', i, ',', j, '] ')     end   end;   writeln end. Тестовое решение: Исходный массив   35  34 -17 -33  20 -29   -8 -31  -4 -20   8  -1  -39  -7 -12  27  42   9   32  13 -17  37  19 -24 *** Седловые точки *** [2,5]
Не нашли ответ?
Ответить на вопрос
Похожие вопросы