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,输出一个螺旋式的数字矩阵。

创想未来
评论前必须登录!
注册