给出一个不大于 20 的正整数 n,输出 n×n 的蛇形方阵。 从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 4 个字符,后面使用空格补齐。
时间: 2024-05-08 13:20:24 浏览: 86
以下是 Python 代码实现:
```python
n = int(input()) # 读入正整数n
# 初始化一个n×n的矩阵
matrix = [[0] * n for i in range(n)]
# 定义蛇形填数的初始位置和方向
x, y, dx, dy = 0, 0, 0, 1
# 开始填数
for i in range(1, n * n + 1):
matrix[x][y] = i # 填入数字
# 判断下一个位置是否已经填过数或者超出矩阵范围
if matrix[(x + dx) % n][(y + dy) % n] != 0:
dx, dy = dy, -dx # 改变方向
x, y = x + dx, y + dy # 移动位置
# 输出蛇形方阵
for i in range(n):
for j in range(n):
print("{:4d}".format(matrix[i][j]), end="")
print()
```
示例输入:
```
5
```
示例输出:
```
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
```
阅读全文