鞍点:一个矩阵中如果该值在行上最小,列上最大,则该数称为该矩阵的鞍点
由定义可知:求行上最小,列上最大值就是该矩阵的鞍点
'''求矩阵的靶点,即在矩阵行上最小而在列上最大的点'''
def get_andian(n):
#生成矩阵,将矩阵的元素存入广义表中,相当于C语言中的二维数组
i = 0
juzhen = []
while True:
if i >= n:
break
else:
hang = list(map(int,input("请按行输入矩阵的值,用空格隔开:").split(' ')))
i += 1
juzhen.append(hang)
#打印矩阵
print("矩阵:")
for i in juzhen:
for j in i:
print(j,end=' ')
print('')
#找鞍点
x = 0
for h in juzhen:
key = min(h) #找出每一行中最小值,然后再判断该最小值在矩阵这一列中是否为最大值
y = h.index(key)
if key >= max([hang[h.index(key)] for hang in juzhen]):
print("鞍点位置:(%d,%d)" %(x,y))
print(key)
x += 1
if __name__ == '__main__':
n = int(input("请输入矩阵行数n:"))
get_andian(n)
运行结果:
请输入矩阵行数n:3
请按行输入矩阵的值,用空格隔开:9 8 7
请按行输入矩阵的值,用空格隔开:6 5 4
请按行输入矩阵的值,用空格隔开:3 2 1
矩阵:
9 8 7
6 5 4
3 2 1
鞍点位置:(0,2)
7