Python實現蛇形矩陣

2021-08-18 16:27:14 字數 1892 閱讀 7275

def matrix(n):

#生成 n*n 0矩陣

l = [[0 for i in range(n)] for j in range(n)]

#設定邊界條件

right = false

left = false

down = true

up = false

#設定邊界

boundright = n

boundleft = 0

boundbottom = n

boundtop = 0

num = 0

#記錄每次迴圈的座標

startofx = 0

startofy = n - 1

while num < n * n:

#從[0][3]開始向下走

if down:

for _ in range(startofx, boundbottom):

num += 1

l[_][startofy] = num

down = not down

left = not left

#走完一層將右邊的邊界減一

boundright -= 1

#設定下一次迴圈的起點位置

startofx = _

startofy -= 1

#到達底邊界時向左走

if left:

for _ in range(startofy, boundleft-1, -1):

num += 1

l[startofx][_] = num

left = not left

up = not up

#同樣走完一層後底邊界減一

boundbottom -= 1

#設定下一次迴圈的起點位置

startofy = _

startofx -= 1

#到達邊界後向上走

if up:

for _ in range(startofx, boundtop-1, -1):

num +=1

l[_][startofy] = num

right = not right

up = not up

#這裡走完之後左邊增加一層,所以左邊界加一

boundleft += 1

startofx = _

startofy += 1

#到達頂層向右走

if right:

for _ in range(startofy, boundright):

num += 1

l[startofx][_] = num

down = not down

right = not right

#同樣走完以後頂層增加一層,上邊界加一

boundtop += 1

startofy = _

startofx += 1

#列印矩陣

for i in range(n):

for j in range(n):

print(l[i][j], end=" ")

print()

matrix(5)

###########

13 14 15 16 1

12 23 24 17 2

11 22 25 18 3

10 21 20 19 4

9 8 7 6 5

matrix(4)

#############

10 11 12 1

9 16 13 2

8 15 14 3

7 6 5 4

C 實現蛇形矩陣

昨天做了一道關於蛇形矩陣的演算法題,覺得有點意思,下面記錄一下我實現的過程。我的做法是建立乙個動態二維陣列,然後一層一層往內填數字 如上圖,先是1 3,4 6,7 9,10 12。這是第一層,然後記錄層數,一層層迴圈即可。但是在我除錯的時候發現,如果是奇數行,最後中間那個數會沒有被賦值,所以在 最後...

華為機考,蛇形矩陣,python

思路 每行的數是有規律的,以n 4為例,第一行的第乙個數是1,第二數是1 2 3,第三個數是3 3 6,第四個數是6 4 10,總共加了n 1次分別是range 2,n 1 第二行的第乙個數是1 1 2,第二個數是2 3 5,第三個是5 4 9,總共加了n 2次,分別是range 3,n 1 第三行...

螺旋矩陣 蛇形矩陣

問題描述 給定乙個包含m行n列的m x n矩陣,程式設計按照螺旋順序,輸出該矩陣中的所有元素。輸入有多個矩陣。每個矩陣資料的第1行有兩個整數m和n,接著是乙個mxn矩陣的描述,有m行,每行有n個整數 輸出對每個矩陣資料,按照螺旋順序輸出矩陣陣列的元素。輸入樣例 3 31 2 3 4 5 6 7 8 ...