Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце. Для заданной целочисленной матрицы вывести индексы всех ее седловых точек.
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]