Python——寻找矩阵的【鞍点】(教师:恒风)
- 人工智能
- 2025-09-06 06:03:02

在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点
恒风的编程
思路:
使用while循环找到行中最大值,此时列的坐标已知,利用列表推导式生成列不变的纵列,利用min()函数得到纵列最小值,看此行的最大值是不是等于纵列的最小值 ,如果是,就是鞍点坐标位置。
n=int(input("请输人矩阵行数:")) s=[] for i in range(n): m=input("请按行输入矩阵的值,用空格隔开:") t=m.split(" ") s.append(list(map(int,t))) # print(s) # s = [[1, 22, 3], [4, 15, 6], [7, 18, 9]] a=0#行的坐标 b=0#列的坐标 lie=0#找出一行中最大值的时候,保存列号 foundflag=False#找到鞍点的标志 while a<len(s): b=0 c=s[a][b] while b<len(s):#在一行中一个一个的往后找出最大值 if s[a][b]>c: c = s[a][b] lie=b#lie的值在不断更新,当一列执行完后,lie的值就是这和一行最大值的列坐标 b=b+1 # print(lie) zlie=[s[a][lie] for a in range(int(n))]#有了列号,利用列表推导式生成纵列的列表 # print(zlie) if c==min(zlie):#如果行中最大值等于纵列的最小值就是鞍点位置 print("鞍点位置:",(a,lie)) foundflag = True a=a+1 if not foundflag: print("没有找到鞍点!")安徽必刷卷(十二)考题:
附答案
也可以用for循环来实现
解决方式: 1.找出每行最大值 2.找出最大值所对应的的列中,这个值是否为该列最小值;如果是,那么为鞍点。 3.每行都没有鞍点,该矩阵木有鞍点 实现步骤: 行号for循环i=0 to 2 列号j循环:找出该行最大值 把最大值所在列号给colum,并把最大值给max for行号循环:找出max所在的列中的最小值 把最小值给min,并记录此时行号在row 如果max==min,则输出鞍点a[row][col],break进入下一个行号的大循环 如果大的for循环结束后,依旧max不等于min 则,没有鞍点
Python——寻找矩阵的【鞍点】(教师:恒风)由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Python——寻找矩阵的【鞍点】(教师:恒风)”