欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)楊氏矩陣查找

 更新時間:2019年03月02日 08:47:17   作者:ZzzMxin  
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)楊氏矩陣查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python實(shí)現(xiàn)楊氏矩陣查找的具體代碼,供大家參考,具體內(nèi)容如下

問題描述:

在一個m行n列二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數(shù),輸入這樣的一個二維數(shù)組和一個整數(shù),判斷數(shù)組中是否含有該整數(shù)。有則返回1,無則返回0,輸入錯誤返回input error

問題分析:根據(jù)楊氏矩陣的規(guī)律可知,左上角是最小元素,右下角是最大元素,進(jìn)行比較一次只能排除一個。而利用左下角或者右上角對比,一次可以排除一行或一列。

AC代碼以右上角為例:

  • 當(dāng)右上角大于要查找的數(shù)字時,排除一行;
  • 當(dāng)右上角大于要查找的數(shù)字時,排除一列;
  • 相等則返回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):
      # 列表模擬二維數(shù)組
      p = list(map(int, sys.stdin.readline().split()))
      arr.append(p)
    # 獲取要查找的數(shù)
    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())

如有疑問,歡迎交流和指正。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論