Python求方阵鞍点

177 阅读1分钟

问题分析

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

问题解决

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

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

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)