def gen(n): """ 生成一个n阶的螺旋矩阵。 参数: n -- 矩阵的阶数 返回: 一个二维列表,表示生成的螺旋矩阵。 """ # 初始化一个n*n的全0矩阵 matrix = [[0] * n for _ in range(n)] # 初始化行、列索引和数字序号以及方向 row, col = 0, 0 num, direction = 1, 0 # 循环填充数字直到填满整个矩阵 while num <= n ** 2: # 如果当前位置为空,则填充数字并递增 if matrix[row][col] == 0: matrix[row][col] = num num += 1 # 根据当前方向决定下一步行动 if direction == 0: # 向右移动,如果遇到边界或已填充位置,则改变方向 if col < n - 1 and matrix[row][col + 1] == 0: col += 1 else: direction += 1 elif direction == 1: # 向下移动,如果遇到边界或已填充位置,则改变方向 if row < n - 1 and matrix[row + 1][col] == 0: row += 1 else: direction += 1 elif direction == 2: # 向左移动,如果遇到边界或已填充位置,则改变方向 if col > 0 and matrix[row][col - 1] == 0: col -= 1 else: direction += 1 elif direction == 3: # 向上移动,如果遇到边界或已填充位置,则改变方向 if row > 0 and matrix[row - 1][col] == 0: row -= 1 else: direction += 1 # 确保方向值在0-3之间循环 direction %= 4 return matrix def show(matrix): """ 展示一个二维列表(矩阵)。 参数: matrix -- 一个二维列表 返回: 无返回值,直接打印矩阵的每行元素。 """ # 遍历矩阵,打印每行元素 for item in matrix: for num in item: print(num, end="\t") print() def show_spiral_matrix(n): """ 展示一个n阶的螺旋矩阵。 参数: n -- 矩阵的阶数 返回: 无返回值,直接打印螺旋矩阵。 """ # 生成n阶螺旋矩阵并展示 matrix = gen(n) show(matrix) # 调用函数展示一个6阶的螺旋矩阵 show_spiral_matrix(6)
螺旋矩阵:给定矩阵的阶数n,输出一个螺旋式的数字矩阵。
未经允许不得转载:创想未来 » 螺旋矩阵:给定矩阵的阶数n,输出一个螺旋式的数字矩阵。
评论前必须登录!
注册