浙大版《Python 程序设计》题目集第5章-9 求矩阵鞍点的个数 (30 分)
n=int(input())
mat=[]
for i in range(n):
mat.append(list(map(int,input().split())))
if n==1:
print('0')
else:
rowmax=[]
for i in range(n):
t=0
for j in range(n):
if mat[i][j]>=mat[i][t]:
t=j
rowmax.append(t)
num=0
for i in range(n):
flag=True
for j in range(n):
if mat[j][rowmax[i]]<mat[i][rowmax[i]]:
flag=False
if flag==True:
num+=1
print('%d'%(num))
已改进,可以有多个最大,最小值。
n=int(input())
mat=[]
for i in range(n):
mat.append(list(map(int,input().split())))
if n==1:
print('0')
else:
num=0
for i in range(n):
t=0
sco=set()
for j in range(n):
if mat[i][j]>mat[i][t]:
t=j
sco.clear()
sco.add(t)
elif mat[i][j]==mat[i][t]:
sco.add(j)
column=list(sco)
for s in range(len(sco)):
flag=True
t=column[s]
for k in range(n):
if mat[i][t]>mat[k][t]:
flag=False
break
if flag==True:
num+=1
print('%d'%(num))