@sasha_zaitsev

Как найти седловые точки заданной матрицы?

Задана матрица K, содержащая n строк и m столбцов. Седловой точкой этой матрицы назовем элемент, который одновременно является минимумом в своей строке и максимумом в своем столбце.
Найдите количество седловых точек заданной матрицы.
Входные данные
Первая строка содержит целые числа n и m (1 ≤ n, m ≤ 750). Далее следуют n строк по m чисел в каждой. j-ое число i-ой строки равно kij. Все kij по модулю не превосходят 1000.
Выходные данные
Выведите ответ на задачу.
В чем ошибка?
type s = array[1..750,1..750] of integer;
type s2 = array[1..750] of integer;
var mas: s;
var masN,masX: s2;
var n,m,i,j,k: integer;
begin
k:=0;
readln(n,m);
for i:=1 to n do 
   for j:=1 to m do
      read(mas[i,j]);
masN[1]:=mas[1,1];
for i:=1 to n do 
   begin
   for j:=1 to m do
      if mas[i,j]<masN[i] then
         masN[i]:=mas[i,j];
   masN[i+1]:=mas[i+1,1];
   end;
masX[1]:=mas[1,1];
for j:=1 to m do 
   begin
   for i:=1 to n do
      if mas[i,j]>masX[j] then
         masX[j]:=mas[i,j];
   masX[j+1]:=mas[1,j+1];
   end;
for i:=1 to n do 
   for j:=1 to m do
      if (mas[i,j]=masN[i]) and (mas[i,j]=masX[j]) then
         k:=k+1;
write(k);
end.
  • Вопрос задан
  • 4974 просмотра
Решения вопроса 1
15432
@15432
Системный программист ^_^
как минимум, здесь вы задаёте начальное значение только первого элемента массива, значения для i > 1 остаются произвольными (или нулями, как там ваш компилятор делает).
masN[1]:=mas[1,1];
делайте инициализацию masN[i] := mas[i, 1] в начале верхнего цикла

для второго случая аналогично.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lil_mihail
import numpy as np

data = np.array([[12, 13, 12], [10, 31, 9]])

def saddle_point(arr):
    max_col = np.amax(arr, axis=0)
    min_row = np.amin(arr, axis=1)
    result = []
    for i in range(len(min_row)):
        for j in range(len(max_col)):
            if max_col[j] == min_row[i]:
                result.append("Седловая точка - " + str(min_row[i]) + " её координаты - " + str(i+1) + ", " + str(j+1))
    if result != []:
        return result;
    else:
        return "Седловой точки нет"

print(saddle_point(data))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы