1. 螺旋方阵问题解析
PTA实验7-2-9的螺旋方阵是一个经典的二维数组填充问题。给定一个N×N的方阵,要求从左上角开始,按照顺时针方向由外向内依次填充1到N²的数字。这个看似简单的题目实际上考察了多个编程核心能力:
- 二维数组的精确控制能力
- 循环与边界条件的处理技巧
- 方向变换的逻辑设计
- 数学建模与空间想象能力
我在ACM竞赛和实际教学中多次接触这类问题,发现它特别适合用来训练程序员的"空间思维"。新手常见的困惑点在于如何优雅地处理方向转换和边界收缩,而老手则更关注代码的可读性和扩展性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 算法设计思路
2.1 分层填充法
最直观的解法是将方阵看作由多层嵌套的环组成,从外层向内层逐层填充。每层包含四条边:
- 从左到右填充上行
- 从上到下填充右列
- 从右到左填充下行
- 从下到上填充左列
python复制def spiral_matrix(n):
matrix = [[0]*n for _ in range(n)]
left, right, top, bottom = 0, n-1, 0, n-1
num = 1
while left <= right and top <= bottom:
# 从左到右填充上行
for i in range(left, right+1):
matrix[top][i] = num
num += 1
top += 1
# 从上到下填充右列
for i in range(top, bottom+1):
matrix[i][right] = num
num += 1
right -= 1
# 从右到左填充下行
for i in range(right, left-1, -1):
matrix[bottom][i] = num
num += 1
bottom -= 1
# 从下
