当前位置: 首页 > article >正文

Python——寻找矩阵的【鞍点】(教师:恒风)

 在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点

恒风的编程

思路:

使用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
则,没有鞍点


http://www.kler.cn/a/550381.html

相关文章:

  • 接口测试及常用接口测试工具(Postman/Jmeter)
  • Linux学习笔记之虚拟地址空间
  • 【Linux】--- 信号阻塞、信号捕捉
  • TransCNN模型详解
  • JUC并发二
  • 健康的生活方式小结---秋浦四郎
  • Micropython RPI-PICO 随记-LVGL实战3 综合调试
  • Java中CompletableFuture异步工具类
  • 微信云开发小程序音频播放踩坑记录 - 从熄屏播放到iOS静音
  • 碰一碰发视频@技术原理与实现开发步骤
  • 在docker中部署fastdfs一些思考
  • 2步破解官方sublime4最新版本 4192
  • Dest1ny漏洞库: 美团代付微信小程序系统任意文件读取漏洞
  • 基于 Python typing 模块的类型标注
  • 力扣hot100_矩阵_python版本
  • ORB-SLAM3的源码学习:TwoViewReconstruction通过两幅图像来实现重建
  • 2024Selenium自动化常见问题及解决方式!
  • 【云原生】最新版Kubernetes集群基于Containerd部署
  • STM32 PWM脉冲宽度调制介绍
  • 又是阿里云npm install报错:ENOENT: no such file or directory, open ‘/root/package.json‘