python实战实例:计算鞍点

题目描述

给定一个 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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SHU_ANGY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值