В массиве А[1..N,1..N] определить номера строки и столбца какой-нибудь седловой точки. Некоторый элемент массива называется седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце

В массиве А[1..N,1..N] определить номера строки и столбца какой-нибудь седловой точки. Некоторый элемент массива называется седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце
Гость
Ответ(ы) на вопрос:
Гость
const   n = 6; // число строк   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. Тестовое решение Исходный массив   10  25  38  38   45  32  42  36  -39  -6   9  48  -25 -37  40  30 *** Седловые точки *** [2,2]
Гость
const   N = 5; var   i, j: integer;   a: array[1..N, 1..N] of integer;   min, max: array[1..N] of integer; begin   writeln('Исходный массив: ');   for i := 1 to N do begin     for j := 1 to N do begin       a[i, j] := Random(10);       write(a[i, j] : 3);       if (j = 1) or (max[i] > a[i, j]) then max[i] := a[i, j];       if (i = 1) or (min[j] < a[i, j]) then min[j] := a[i, j];     end;     writeln;   end;   writeln('Седловые точки: ');   for i := 1 to N do     for j := 1 to N do       if max[i] = min[j] then writeln('[', i, '; ', j, ']'); end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы