题目描述 所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。 输入 输入格式: 输入在一行中给出一个正整数N(<=10)。 输出 输出格式: 输出N×N的螺旋方阵。每行N个数字,每个数字占3位。 样例输入 复制 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
时间: 2023-06-08 11:03:38 浏览: 290
以下是螺旋方阵的解决方案,用 Python 语言实现。
N = int(input())
# 构造初始方阵
matrix = [[0]*N for i in range(N)]
# 记录已填入数字的个数
count = 1
# 遍历一圈一圈填入数字
for i in range(N//2 + 1):
for j in range(i, N-i): # 从左到右填入数字
matrix[i][j] = count
count += 1
for j in range(i+1, N-i): # 从上到下填入数字
matrix[j][N-i-1] = count
count += 1
for j in range(N-i-2, i-1, -1): # 从右到左填入数字
matrix[N-i-1][j] = count
count += 1
for j in range(N-i-2, i, -1): # 从下到上填入数字
matrix[j][i] = count
count += 1
# 输出螺旋方阵
for i in range(N):
for j in range(N):
print("{:3d}".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
代码解释:
首先输入一个正整数 N,然后构造一个 N×N 的初始方阵,并定义变量 count 记录已填入数字的个数。然后从外向内遍历一圈一圈填入数字。每一圈都分为从左到右、从上到下、从右到左和从下到上四个步骤,分别填入数字并更新 count 的值。
最后,输出螺旋方阵即可。格式化输出时使用 "{:3d}" 控制每个数字占 3 位,便于对齐。
阅读全文