Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/75: Рейтинг темы: голосов - 75, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 04.12.2015
Сообщений: 16

Найти седловую точку в матрице

29.02.2016, 13:18. Показов 14919. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
седловая точка- это максимальный элемент в строке и минимальный в столбце, вот мой код, что-то тут явно не так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
n = int(input('введите кол-во cтрок и столбцов: '))
a =[list(map(int,input().split())) for i in range(n)]
maxx=a[0][0]
flag=0
for i in range (n):
    for j in range (n):
        if a[i][j]>maxx:#поиск максимального в строке
            maxx=a[i][j]
            minn=a[i][j]
    for i1 in range (n):
            if a[i][i1]<minn:#поиск минимального в столбце
                minn=a[i1][j]
                print(minn)
    if maxx==minn:#проверка, что максимальное в строке=минимальному в строке
        maxx=0
        flag+=1#вычисляем номер седловой точки
        print('Седловая точка № ',flag,'=',maxx)
if flag==0:#если седловых точек нет, то выводим сообщение об этом
    print('Седловой точки нету')
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.02.2016, 13:18
Ответы с готовыми решениями:

Как найти седловую точку в матрице?
Есть задача: Разработать функцию saddle_point(matrix), которая принимает 1 аргумент -- прямоугольную матрицу целых чисел, заданную в...

Найти седловую точку матрицы N×N
Найти седловую точку матрицы N×N. Седловой точкой является точка, максимальная в столбце и одновременно минимальная в строке

Найти в матрице седловую точку
Помогите решить задачу: Седловой точкой в матрице называется элемент, являющийся одновременно наибольшим в столбце и наименьшим в строке....

9
30 / 30 / 22
Регистрация: 13.02.2016
Сообщений: 131
29.02.2016, 19:05
Как то так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
n,l=map(int, input().split())
matrix=[(input().split()+['0']*l)[:l] for _ in range(n)]
pos=[set(), set()]
for i in range(n): #Поиск макс значений в каждой строке
    j=matrix[i].index(max(matrix[i]))
    pos[0]|={(i, j)}
rev_matrix=[[matrix[j][i] for j in range(n)] for i in range(l)] #Перестройка матрицы(столбцы-строки, строки-столбцы)
for i in range(l): #Поиск мин значений в каждом столбце
    j=rev_matrix[i].index(min(rev_matrix[i]))
    pos[1]|={(j, i)} 
if pos[0]&pos[1]: #Поиск пересечений
    a, b=list(pos[0]&pos[1])[0]
    matrix[a][b]+='!' #К седловой точке добавляется '!'
else:
    print('Седловой точки не найдено')
for line in matrix: #Вывод матрицы
    print(*line)
0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
29.02.2016, 19:59
А у меня получилось вот так:
Python
1
2
3
4
5
6
7
n = int(input('введите кол-во cтрок и столбцов: '))
a =[list(map(int,input().split())) for i in range(n)]
a1 = [*map(list, zip(*a))]
 
for i in range(n):
    if ( max(a[i]) == min(a1[a[i].index(max(a[i]))]) ):
        print(i, "   " , a[i].index(max(a[i])))
1
30 / 30 / 22
Регистрация: 13.02.2016
Сообщений: 131
29.02.2016, 20:33
YakobsEA, у меня строка
Python
1
a1 = [*map(list, zip(*a))]
Выдает ошибку
Python
1
SyntaxError: can use starred expression only as assignment target
П.с. переделал свою
Python
1
2
3
4
5
6
7
8
9
10
11
n,l=map(int, input().split())
matrix=[(input().split()+['0']*l)[:l] for _ in range(n)]
rev_matrix=[[matrix[j][i] for j in range(n)] for i in range(l)] 
 
for pos1 in range(n):
    pos2=matrix[i].index(max(matrix[i]))
    if (max(matrix[pos1]) == min(rev_matrix[pos2])):
        matrix[pos1][pos2]+='!'
 
for line in matrix: 
    print(*line)
0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
01.03.2016, 06:33
Whost, у Вас питон 2-й версии возможно?

Добавлено через 5 минут
К стати, в данном случае можно и вот эти обойтись:
Python
1
a1 = [*zip(*a)]
А ещё правильнее в numpy такую задачу решать. В моём решении (и в ваше переделанном кажется тоже) есть нюанс...
Попробуйте задать матрицу 3 на 3 из единиц...
0
30 / 30 / 22
Регистрация: 13.02.2016
Сообщений: 131
01.03.2016, 18:06
Цитата Сообщение от YakobsEA Посмотреть сообщение
у Вас питон 2-й версии возможно?
версия 3.4
Цитата Сообщение от YakobsEA Посмотреть сообщение
Python
1
a1 = [*zip(*a)]
это, кстати, выдает ту же ошибку
Цитата Сообщение от YakobsEA Посмотреть сообщение
Попробуйте задать матрицу 3 на 3 из единиц...
Задал, выдала правильный результат. В чем проблема?

Кстати обнаружил ошибку в прошлой программе, забыл i на pos1 поменять
Python
1
2
3
4
5
6
7
8
9
10
11
n,l=map(int, input().split())
matrix=[(input().split()+['0']*l)[:l] for _ in range(n)]
rev_matrix=[[matrix[j][i] for j in range(n)] for i in range(l)] 
 
for pos1 in range(n):
    pos2=matrix[pos1].index(max(matrix[pos1]))
    if (max(matrix[pos1]) == min(rev_matrix[pos2])):
        matrix[pos1][pos2]+='!'
 
for line in matrix: 
    print(*line)
0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
02.03.2016, 06:09
Whost, у меня 3.5.1
Вот она причина:

PEP 448 - Additional Unpacking Generalizations
PEP 448 extends the allowed uses of the * iterable unpacking operator and ** dictionary unpacking operator. It is now possible to use an arbitrary number of unpackings in function calls:

Python
1
2
3
4
5
6
7
8
9
>>> print(*[1], *[2], 3, *[4, 5])
1 2 3 4 5
 
>>> def fn(a, b, c, d):
...     print(a, b, c, d)
...
 
>>> fn(**{'a': 1, 'c': 3}, **{'b': 2, 'd': 4})
1 2 3 4
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
02.03.2016, 11:18
Как-то так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -*- coding: utf-8 -*-
import numpy as np
 
arr = np.array([
    [9, 16, 9],
    [2, 6, 8],
    [9, 16, 9]])
min_str = np.max(arr, axis=1)
min_str_idx = np.argmin(min_str)
 
max_col = np.min(arr, axis=0)
max_col_idx = np.argmax(max_col)
# нашли элемент, подозрительный на седловой. Проверяем.
print min_str_idx, max_col_idx
if np.argmax(arr[min_str_idx, :]) == max_col_idx and np.argmin(arr[:, max_col_idx]) == min_str_idx:
    print "wow, we found it!", min_str_idx, max_col_idx
else:
    print "Sorry, no saddle"
0
30 / 30 / 22
Регистрация: 13.02.2016
Сообщений: 131
02.03.2016, 13:57
YakobsEA, понятно. Удобная фича кстати, давно такую хотел
0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
02.03.2016, 14:04
Whost, так напрашивается сама собой!
Я так сделал исключительно по неопытности. Не знал, что нельзя. )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.03.2016, 14:04
Помогаю со студенческими работами здесь

Найти седловую точку в матрице
Не могу никак сообразить, как искать седловую точку в матрице (седловая точка - элемент, который является минимальным в строке и...

Найти седловую точку в матрице
С клавиатуры вводится размер матрицы (количество строк и столбцов) и сами элементы матрицы. Необходима проверка введенных данных. Если в...

В матрице порядка n найти седловую точку
В матрице порядка n найти седловую точку (элемент максимальный в строке и минимальный в столбце). #include&lt;stdio.h&gt; ...

Найти седловую точку в матрице. Использование функций
Элемент матрицы является седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце (или наоборот: наибольшим...

В заданной матрице найти седловую точку и вернуть ее значение и координаты
В заданной матрице найти седловую точку и вернуть ее значение и координаты (оформит в виде функции). Точка называется седловой, если она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru