pta h0014
时间: 2025-06-30 14:27:44 浏览: 3
### PTA H0014问题解析
针对PTA平台上的H0014题目,该题主要考察的是对字符串处理以及条件判断的能力。此题要求读入一个整数n (1 ≤ n ≤ 9),然后输出由数字组成的n×n矩阵,其中心位置放置最小的非零数字,向外依次增大直到达到最外层的最大值n。
#### 解决方案概述
为了有效解决这个问题,可以采用逐层填充的方法构建所需的图案。具体来说:
- 初始化一个大小为`n*n`全为0的二维数组用于存储结果。
- 使用变量记录当前应填入的数值(从1开始),并定义四个边界指针分别指向矩形区域的上下左右界限。
- 循环执行以下操作直至所有格子都被赋值:
- 按照顺时针方向沿四条边遍历当前位置,并设置相应元素值;
- 更新对应边界的坐标以缩小包围圈范围;
- 当内缩后的宽度或高度小于等于0时结束循环。
最后按照行优先顺序打印整个二维数组即可得到期望的结果[^1]。
```python
def generate_matrix(n):
matrix = [[0]*n for _ in range(n)]
num = 1
top, bottom, left, right = 0, n-1, 0, n-1
while True:
# Top row from left to right
for col in range(left, right+1):
matrix[top][col] = num
top += 1
if top > bottom or left > right: break
# Right column from top to bottom
for row in range(top, bottom+1):
matrix[row][right] = num
right -= 1
if top > bottom or left > right: break
# Bottom row from right to left
for col in reversed(range(left, right+1)):
matrix[bottom][col] = num
bottom -= 1
if top > bottom or left > right: break
# Left column from bottom to top
for row in reversed(range(top, bottom+1)):
matrix[row][left] = num
left += 1
num += 1
return matrix
if __name__ == '__main__':
import sys
input_n = int(sys.stdin.readline().strip())
result = generate_matrix(input_n)
for line in result:
print(' '.join(str(x).rjust(2,' ') for x in line))
```
上述代码实现了基于输入参数n创建指定模式矩阵的功能,并通过标准输入接收测试数据,最终将生成的结果按照样例格式输出到控制台。
阅读全文
相关推荐


















