Python 求矩阵鞍点

【问题描述】
如果整型数组A中存在这样的一个元素A[i, j],满足条件:A[i, j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。请编程计算出m*n的矩阵A的所有马鞍点,若矩阵中不存在马鞍点,应给出相应的信息。

【输入形式】
输入的第一行两个数据分别为矩阵的m,n值,以空格间隔;
第二行为整型数组中的所有元素,以空格间隔,按行来保存数据

【输出形式】输出所有的马鞍点,域宽为4(%4d);若无,打印 no。

【样例输入】

5 5

1 2 3 4 5 7 3 4 5 6 2 1 5 4 3 5 3 6 5 4 5 3 6 5 4
【样例输出】3 3 3

【样例说明】输入5*5的矩阵,第一行的数据为1 2 3 4 5,第二行 7 3 4 5 6,以此类推:

1 2 3 4 5

7 3 4 5 6

2 1 5 4 3

5 3 6 5 4

5 3 6 5 4

输出本数组中的三个个马鞍点3(1行1列) 3(3行1列) 3(4行1列),输出的域宽为4。


a=list(map(int,input().strip().split()))
hang=int(a[0])
lie=int(a[1])
c=[]
e=list(map(int,input().strip().split()))
for i in range(hang):
    c.append([int(d) for d in e[i*lie:i*lie+lie]])
#print(c)
flag=False
for i in range(hang):
    b=c[i].index(min(c[i]))
    k=0
    while k < hang:
        if c[i][b]>=c[k][b]:
            k+=1
            if k==hang:
                flag=True
                print('{:<4}'.format(c[i][b]),end='')
        else:
            break
if flag==False:
    print("no")

However,竟然没拿满分,俺也不知道为什么,回头再改吧,哼
同时附上格式化输出的链接:
https://blog.csdn.net/i_chaoren/article/details/77922939

你可能感兴趣的:(Python 求矩阵鞍点)