右,下,左,上,用數值表示即是x加1格(1,0),y加1格(0,1),x減1格(-1,0),y減1格(0,-1)。坐標從(0,0)開始行走,當超出范圍或遇到障礙時切換方向。螺旋矩陣的打印首先要對n*n的數組進行賦值,根據規律可以看出,每一層都是按照右->下->" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python使用迭代器打印螺旋矩陣的思路及代碼示例

系統 2374 0

思路

螺旋矩陣是指一個呈螺旋狀的矩陣,它的數字由第一行開始到右邊不斷變大,向下變大,
向左變大,向上變大,如此循環。
螺旋矩陣用二維數組表示,坐標(x,y),即(x軸坐標,y軸坐標)。
順時針螺旋的方向是->右,下,左,上,用數值表示即是x加1格(1,0),y加1格(0,1),x減1格(-1,0),y減1格(0,-1)。
坐標從(0,0)開始行走,當超出范圍或遇到障礙時切換方向。
螺旋矩陣的打印首先要對n*n的數組進行賦值,根據規律可以看出,每一層都是按照右->下->左->上的順序進行遞增,因此,只要找出每一層的第一個數即可,第一個數值為上一層的第一個數+4*n-4,循環時n每次減2。

代碼
經過上面的分析,思路很清晰了,千言不如一碼:

            
import itertools 
def spiral(n,m): 
  _status = itertools.cycle(['right','down','left','up'])#用于狀態周期性的切換 
  _movemap = { 
    'right':(1,0), 
    'down':(0,1), 
    'left':(-1,0), 
    'up':(0,-1), 
  } 
  pos2no = dict.fromkeys([(x,y) for x in range(n) for y in range(m)]) 
  _pos = (0,0) 
  _st = next(_status) 
  for i in range(1,n*m+1): 
    _oldpos = _pos 
    _pos = tuple(map(sum,zip(_pos,_movemap[_st])))#根據狀態進行移動 
    if (_pos not in pos2no) or (pos2no[_pos]):#當超出范圍或遇到障礙時切換方向 
      _st = next(_status) 
      _pos = tuple(map(sum,zip(_oldpos,_movemap[_st]))) 
    pos2no[_oldpos] = i 
  return pos2no 
 
def display_spiral(n,m): 
  pos2no = spiral(n,m) 
  for i in range(m): 
    for j in range(n): 
      print pos2no[(j,i)],'\t', 
    print '\n' 
  print '-'*30 
 
display_spiral(4,4) 
display_spiral(5,4) 

          

Python使用迭代器打印螺旋矩陣的思路及代碼示例_第1張圖片


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 9久久这里只有精品国产 | 日韩经典欧美一区二区三区 | 夜色资源网yese321 | 久久99精品久久久久久综合 | 中文字幕亚洲无线码在线一区 | 久久99国产综合精品 | 91官网 | 色片在线 | 日韩欧美在线综合网高清 | 欧美成人免费tv在线播放 | 玖玖精品国产 | 国产成人精品影院狼色在线 | 97色97色97色成人 | 国产成人精品曰本亚洲 | 国产欧美精品午夜在线播放 | 99精选视频 | 久久久精品2018免费观看 | 日产国产精品久久久久久 | 婷婷色综合久久 | 中文字幕不卡一区2021 | 风流一代在线播放 | 国产精自产拍久久久久久 | 色综合手机在线 | 日本亚洲视频 | 四虎影视国产在线观看精品 | 91视频第一页 | 免费国产高清精品一区在线 | 国产亚洲玖玖玖在线观看 | 久久99在线| 亚洲久本草在线中文字幕 | 国产精品久久自在自线观看 | 久久久性 | 欧美日韩成人 | 日本日日黄 | 国产成年女一区二区三区 | 4hu四虎永久免在线视看 | 欧美日韩视频在线播放 | 91精品综合久久久久m3u8 | 一级毛片日韩a欧美 | 国产精品久久久久精 | 免费观看一级特黄三大片视频 |