Python求方阵鞍点

该博客讨论了如何在给定的方阵中找到鞍点的问题。鞍点是矩阵中一个元素,其值在同一行中最大但在同一列中最小。通过首先找到每行的最大值及其索引,然后对比这些最大值在对应列中的其他元素,可以确定鞍点。提供的Python代码实现了这一算法,读取矩阵,找出鞍点并输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题分析

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。(题目保证给出的矩阵是方阵,且至多存在一个鞍点)

问题解决

先求每一行的最大值,然后再求每一列的最小值。有个问题:怎么求每一列的最小值呢?

利用所求得的最大值的下标去遍历每一行的中的每一列相同下标的元素,自然就找到每一列了。

def get_andian(n):
    m=0
    juzhen=[]
    while m<n:
        row=list(map(int,input("按行输入,空格隔开:").split(" ")))
        juzhen.append(row)#得到一个二位列表
        m+=1
      
    x=0
    for h in juzhen:
        # print(h)
        key=max(h)#找到一行之中最大元素
        y=h.index(key)#获得最大元素的下标
        #遍历矩阵每一行,找的和key下标相同的元素,然后饿key比较,得出鞍点
        if key<=min([row[h.index(key)] for row in juzhen]):
            print(f"{x}行{y}列")
            print(key)
            return True
        x+=1
    return False

n=int(input("n:"))
flag=get_andian(n)
print(flag)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值