日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

作者:小星博博 ? 更新時間: 2022-03-31 編程語言

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
            x += dx[dn]
            y += dy[dn]
 
    return matrix
 
 
if __name__ == '__main__':
    n = int(input("輸入矩陣n值:"))
    matrix = spiral(n)
    for i in range(n):
        print(matrix[i])

運行結果:

附:python 簡單實現螺旋矩陣

創建一個大小為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
        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

總結

原文鏈接:https://blog.csdn.net/baidu_39105563/article/details/121950617

欄目分類
最近更新