本文实例为大家分享了python实现杨氏矩阵查找的具体代码,供大家参考,具体内容如下
问题描述:
在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。有则返回1,无则返回0,输入错误返回input error
问题分析:根据杨氏矩阵的规律可知,左上角是最小元素,右下角是最大元素,进行比较一次只能排除一个。而利用左下角或者右上角对比,一次可以排除一行或一列。
AC代码以右上角为例:
- 当右上角大于要查找的数字时,排除一行;
- 当右上角大于要查找的数字时,排除一列;
- 相等则返回1
- 全部查找失败则返回0
代码如下:
# coding=utf-8
import sys
def solve():
try:
# 获取行(n)和列(m)
a = sys.stdin.readline().split()
n, m = int(a[0]), int(a[1])
arr = []
for i in range(n):
# 列表模拟二维数组
p = list(map(int, sys.stdin.readline().split()))
arr.append(p)
# 获取要查找的数
s = int(sys.stdin.readline().strip())
i = 0
j = m - 1
while i<n and j>=0:
if arr[i][j] == s:
# 相等返回1查找成功
return 1
elif arr[i][j] < s:
# 小于要查找的元素,行加1
i += 1
else:
# 大于要查找的元素,列加1
j -= 1
return 0
except Exception:
return "input error"
if __name__ == "__main__":
print(solve())
如有疑问,欢迎交流和指正。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“python实现杨氏矩阵查找”评论...
更新动态
2025年11月07日
2025年11月07日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]