题目描述
给定一个 5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
例如:在下面的例子中,第 4行第 1 列的元素就是鞍点,值为 8。
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
输入格式
输入包含一个 5行5列的矩阵。
输出格式
如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出 not found
。
输入输出样例
输入 #1
11 3 5 6 9 12 4 7 8 10 10 5 6 9 11 8 6 4 7 2 15 10 11 20 25
输出 #1
4 1 8
a=[[0 for _ in range(5)] for _ in range(5)]
h=[]
l=[]
m=0
y=0
for i in range(5):
row=input().split()
for j in range(5):
a[i][j]=int(row[j])
for i in range(5):
max_h = a[i][0]
min_l = a[0][i]
for j in range(5):
if max_h<a[i][j]:
max_h=a[i][j]
if min_l>a[j][i]:
min_l=a[j][i]
h.append(max_h)
l.append(min_l)
for x in h:
if x in l:
m=m+1
y=x
else:
m=m
if m==1:
print('%d %d %d'%(h.index(y)+1,l.index(y)+1,y))
else:
print('not found')
解析:
- 定义一个矩阵a。
- max_h 为每行最大值,min_l为每列最小值。
- 将每行的最大值存储到列表h中,将每列最小值存储在列表l中。
- 判断列表h和l中是否有相同的数,有即为鞍点。
- 因为要将列表h、l循环判断完,所以不能直接输出结果,定义m作为判断条件,y存储鞍点。
- 最后输出鞍点分别在h、l中的下标即为鞍点在矩阵中的位置。
学习up!up!up!