python实现杨氏矩阵查找


Posted in Python onMarch 02, 2019

本文实例为大家分享了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())

如有疑问,欢迎交流和指正。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Flask框架中使用日期和时间的教程
Apr 21 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
python openpyxl使用方法详解
Jul 18 Python
pycharm配置git(图文教程)
Aug 16 Python
Python实现汇率转换操作
May 03 Python
深入了解python列表(LIST)
Jun 08 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
python实现xml转json文件的示例代码
Dec 30 Python
python asyncio 协程库的使用
Jan 21 Python
在pyCharm中下载第三方库的方法
Apr 18 Python
聊聊Python中关于a=[[]]*3的反思
Jun 02 Python
python机器学习创建基于规则聊天机器人过程示例详解
Nov 02 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 #Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
Mar 01 #Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 #Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 #Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
Mar 01 #Python
Python脚本按照当前日期创建多级目录
Mar 01 #Python
Python enumerate函数功能与用法示例
Mar 01 #Python
You might like
php 学习资料零碎东西
2010/12/04 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
基于jquery实现省市联动效果
2015/11/23 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
python next()和iter()函数原理解析
2020/02/07 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
会展中心部门工作职责
2013/11/27 职场文书
小区门卫管理制度
2014/01/29 职场文书
工地安全检查制度
2014/02/04 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
明星员工获奖感言
2014/08/14 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技