Python實(shí)現(xiàn)螺旋矩陣的填充算法示例
本文實(shí)例講述了Python實(shí)現(xiàn)螺旋矩陣的填充算法。分享給大家供大家參考,具體如下:
afanty的分析:
關(guān)于矩陣(二維數(shù)組)填充問題自己動(dòng)手推推,分析下兩個(gè)下表的移動(dòng)規(guī)律就很容易咯。
對(duì)于螺旋矩陣,不管它是什么鬼,反正就是依次向右、向下、向右、向上移動(dòng)。
向右移動(dòng):橫坐標(biāo)不變,縱坐標(biāo)加1
向下移動(dòng):縱坐標(biāo)不變,橫坐標(biāo)加1
向右移動(dòng):橫坐標(biāo)不變,縱坐標(biāo)減1
向上移動(dòng):縱坐標(biāo)不變,橫坐標(biāo)減1
代碼實(shí)現(xiàn):
#coding=utf-8 import numpy ''''' Author: afanty Date: 2016/6/23 ''' def helixMatrix(n): '''''實(shí)現(xiàn)n維螺旋矩陣的填充 :param n:維數(shù) :return:螺旋矩陣 ''' if not isinstance(n, int) or n <= 0: raise ValueError('請(qǐng)輸入合適的維數(shù)') matrix = numpy.zeros((n, n)) left_top = 0 right_buttom = n - 1 number = 1 while left_top < right_buttom: # 向右移動(dòng),橫坐標(biāo)不變,縱坐標(biāo)+1,number+1 i = left_top while i < right_buttom: matrix[left_top][i] = number i += 1 number += 1 # while # 向下移動(dòng),縱坐標(biāo)不變,橫坐標(biāo)+1,number+1 i = left_top while i < right_buttom: matrix[i][right_buttom] = number i += 1 number += 1 #while # 向左移動(dòng),橫坐標(biāo)不變,縱坐標(biāo)-1,number+1 i = right_buttom while i > left_top: matrix[right_buttom][i] = number i -= 1 number += 1 # while # 向上移動(dòng),縱坐標(biāo)不變,橫坐標(biāo)-1,number+1 i = right_buttom while i > left_top: matrix[i][left_top] = number i -= 1 number += 1 # while left_top += 1 right_buttom -= 1 # while if n % 2 != 0: matrix[n / 2][n / 2] = n * n return matrix # end print("腳本之家測(cè)試結(jié)果:") print helixMatrix(5)
運(yùn)行結(jié)果:
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python基于sftp及rsa密匙實(shí)現(xiàn)遠(yuǎn)程拷貝文件的方法
這篇文章主要介紹了Python基于sftp及rsa密匙實(shí)現(xiàn)遠(yuǎn)程拷貝文件的方法,結(jié)合實(shí)例形式分析了基于RSA秘鑰遠(yuǎn)程登陸及文件操作的相關(guān)技巧,需要的朋友可以參考下2016-09-09詳解Python編程中對(duì)Monkey Patch猴子補(bǔ)丁開發(fā)方式的運(yùn)用
Monkey Patch猴子補(bǔ)丁方式是指在不修改程序原本代碼的前提下,通過添加類或模塊等方式在程序運(yùn)行過程中加入代碼,下面就來進(jìn)一步詳解Python編程中對(duì)Monkey Patch猴子補(bǔ)丁開發(fā)方式的運(yùn)用2016-05-05在jupyter notebook中調(diào)用.ipynb文件方式
這篇文章主要介紹了在jupyter notebook中調(diào)用.ipynb文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04深入淺析python 協(xié)程與go協(xié)程的區(qū)別
這篇文章主要介紹了python 協(xié)程與go協(xié)程的區(qū)別 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05python hbase讀取數(shù)據(jù)發(fā)送kafka的方法
今天小編就為大家分享一篇python hbase讀取數(shù)據(jù)發(fā)送kafka的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python實(shí)現(xiàn)的求解最大公約數(shù)算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的求解最大公約數(shù)算法,涉及Python數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-05-05mac PyCharm添加Python解釋器及添加package路徑的方法
今天小編就為大家分享一篇mac PyCharm添加Python解釋器及添加package路徑的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10