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

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

相关文章:

  • 如何理解什么是股指期货?
  • 【复现DeepSeek-R1之Open R1实战】系列3:跑通GRPO!
  • 访问一些网站时,谷歌浏览器提示403 Forbidden
  • 将pyspark中的UDF提升6倍
  • 从开发到部署:EasyRTC嵌入式视频通话SDK如何简化实时音视频通信的集成与应用
  • 玩转大语言模型——使用LM Studio在本地部署deepseek R1的零基础)教程
  • 汽车前排座椅扶手市场报告:未来几年年复合增长率CAGR为2.7%
  • 查询hive指定数据库下所有表的建表语句并生成数据字典
  • 代码随想录day12
  • SoftwareCluster中如何配置VendorSignature
  • 具身智能在智能巡检机器人中的应用——以开关柜带电操作机器人为例
  • WebGPU顶点插槽(Vertex Buffer Slot)使用指南
  • 乘法逆元是什么
  • 【响应式驾考培训网站模板】H5自适应源码下载|含教学管理系统+在线预约功能|多终端适配|可商用授权
  • 设计模式-代理模式、外观模式
  • Python中的GIL锁详解
  • 书评与笔记:《如何有效报告Bug》
  • Linux(centos)系统安装部署MySQL8.0数据库(GLIBC版本)
  • java-->责任链模式
  • 微服务网关
  • 看见“看得见的手”,看见住房与土地——读《央地之间》
  • 开门红背后的韧性密码:上海八大企业的“反脆弱”与“真功夫”
  • 西班牙葡萄牙遭遇史上最严重停电:交通瘫了,通信崩了,民众疯抢物资
  • 现场|西岸美术馆与蓬皮杜启动新五年合作,新展今开幕
  • 黄仁勋访华期间表示希望继续与中国合作,贸促会回应
  • 上海明天起进入“升温通道”,五一假期冲刺33℃