给出一个不大于 20 的正整数 n,输出 n×n 的蛇形方阵。 从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 4 个字符,后面使用空格补齐。
时间: 2024-05-08 11:20:24 浏览: 9
以下是 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
```
相关问题
用C语言,蛇形方阵。给出一个不大于 9 9 的正整数 � n,输出 � × � n×n 的蛇形方阵。 从左上角填上 1 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 3 个字符,前面使用空格补齐。
好的,我来为你解答这个问题。以下是代码实现:
```c
#include <stdio.h>
#define MAXN 100
int main()
{
int n, a[MAXN][MAXN];
scanf("%d", &n);
// 初始化数组
int num = 1;
int row = 0, col = 0;
a[row][col] = num++;
while (num <= n * n)
{
// 向右走
while (col + 1 < n && !a[row][col + 1])
a[row][++col] = num++;
// 向下走
while (row + 1 < n && !a[row + 1][col])
a[++row][col] = num++;
// 向左走
while (col - 1 >= 0 && !a[row][col - 1])
a[row][--col] = num++;
// 向上走
while (row - 1 >= 0 && !a[row - 1][col])
a[--row][col] = num++;
}
// 输出蛇形方阵
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
printf("%3d", a[i][j]);
printf("\n");
}
return 0;
}
```
这里使用了一个二维数组 `a` 来存储蛇形方阵,数组中的值为填充的数字。初始化时,将第一个数字 1 填充在左上角,然后按照顺时针方向不断填充数字,直到填满整个数组。
在填充数字时,我们使用了四个 while 循环,分别表示向右、向下、向左、向上走,每次一直走到不能前进为止。在判断能否前进时,需要注意数组下标的边界问题,以及当前位置是否已经填充了数字的问题。
最后,输出蛇形方阵时,每个数字都占用 3 个字符宽度,使用 `%3d` 的格式化输出即可。
输出一个不大于九的整数n,输出n*n的蛇形方阵
以下是Python代码实现:
n = int(input("请输入一个不大于9的整数:"))
matrix = [[0 for i in range(n)] for j in range(n)]
num = 1
for i in range(n):
if i % 2 == 0:
for j in range(n):
matrix[i][j] = num
num += 1
else:
for j in range(n-1, -1, -1):
matrix[i][j] = num
num += 1
for i in range(n):
for j in range(n):
print(matrix[i][j], end="\t")
print()
输出示例:
请输入一个不大于9的整数:5
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
解释:
输入了5,即需要输出5*5的蛇形方阵。首先创建一个5*5的矩阵,然后从左到右、从右到左、从左到右……依次填充数字,最后输出整个矩阵。