如何利用Python實現n n螺旋矩陣

2022-10-04 11:54:09 字數 1758 閱讀 6279

目錄

3*3螺旋矩陣:

1 2 3

8 9 4

7 6  5

def spiral(n):

matrix = [[0] * n for _ in range(n)]

# 順時針方向(右,下,左,上)

dx = [0, 1, 0, -1]

dy = [1, 0, -1, 0]

x = y = 0

dn = 0 # 方向指標0;向右填充,1:向下填充,2:向上填充,3:向上填充

for i in range(1, n * n + 1): # 從1開始賦值,一直到n*n

matrix[x][y] = i

temp_x = x + dx[dn]

temp_y = y + dy[dn]

if 0 <= temp_x < n and 0 <= temp_y < n and matrix[temp_x][temp_y] == 0:

x = temp_x

y = temp_y

else:

dn = (dn + 1) % 4

hptvq x += dx[dn]

y += dy[dn]

return matrix

if __name__ == '__main__':

n = int(input("輸入矩陣n值:"))

matrix = spiral(n)

for i in range(n):

pwww.cppcns.comrint(matrix[i])

建立乙個大小為m * n的矩陣,

並以螺旋方式遍歷它。

在遍歷時,我們跟蹤變數「 val」以填充下乙個值,

我們將「 val」乙個接乙個地遞增,並將其值放入矩陣中。

以下是簡單實現:

def spiral_matrix(m,n):

''':param x: colunm index

:param y: row index

'''a = [[0 for _ in range(m)] for _ in range(n)]

val = 1

x,y = 0,0

count = m*n

while val <= count:

for i in range(x, m):

a[x][i] = val

val += 1

x += 1

www.cppcns.com for i in range(y+1, n):

a[i][m-1] = val

val += 1

y += 1

if x < m:

for i in range(m-2, x-2, -1):

a[n-1][i] = val

val += 1

m -= 1

if y < n:

for i in range(n-2, y-1, -1):

a[i][y-1] = val

val += 1

n -= 1

for i in a:

print(*i)

spiral_matrix(6,6)

# 1 2 3 4 5 6

# 20 21 22 23 24 7

# 19 32 33 34 25 8

# 18 31 36 35 26 9

# 17 30 29 28 27 10

# 16 15 14 13 12 11

如何利用python實現生命遊戲

英國數學家約翰 何頓 康威在1970年發明了 the game of life,今天番茄加速就來分享下如何利用python實現生命遊戲,規則如下 每個細胞有兩種狀態 存活或死亡 每個細胞與以自身為中心的周圍八格細胞產生互動 當前細胞為存活狀態時,當周圍的存活細胞低於2個時 不包含2個 該細胞變成死亡...

如何利用 Python 實現快速埠掃瞄?

對線上伺服器進行埠掃瞄是一件很有用的事,可以驗證你的防火牆規則,避免暴漏不需要的服務。也可以知道你機器上開了哪些服務,不用等烏雲爆出來了才知道,有人黑進內網玩了好幾個月。哈哈,真事,伺服器被通過zabbix黑進來,開了乙個socket5的程序,自由進出。反正,這玩意很有用,本著奉獻精神,把 放出來,...

Python 利用pymmseq cpp實現分詞

在python這pymmseg cpp 還是十分方便的!環境 ubuntu10.04 python2.65 步驟 2 tar zxf pymmseg cpp tar.gz 解壓後得到pymmseg 目錄 cd pymmseg mmseg cpp python build.py 生成 mmseg.so...