回型方阵 描述 输入一个正整数 n,输出 n×n 的回型方阵。例如,n=5 时,输出: 1 1 1
时间: 2023-12-06 09:01:14 浏览: 224
回型方阵是一种特殊的方阵,其元素按照回字形排列。给定一个正整数n,我们需要输出一个n×n的回型方阵。
思路:
1. 首先我们可以创建一个n×n的二维数组matrix,并初始化每个元素为0。
2. 定义四个变量top、bottom、left、right,分别表示当前方阵的上边界、下边界、左边界和右边界。
3. 定义一个计数器count,初始值为1。表示将要填充的下一个数字。
4. 使用一个while循环进行填充操作,判断条件为left <= right and top <= bottom。
5. 从左到右填充top行,即将count从left到right依次赋值给matrix[top][i],同时count加一。
6. 当top行填充完后,将top加一,表示上边界已经向下移动一行。
7. 接着从上到下填充right列,即将count从top到bottom依次赋值给matrix[i][right],同时count加一。
8. 当right列填充完后,将right减一,表示右边界已经向左移动一列。
9. 继续从右到左填充bottom行,即将count从right到left依次赋值给matrix[bottom][i],同时count加一。
10. 当bottom行填充完后,将bottom减一,表示下边界已经向上移动一行。
11. 最后从下到上填充left列,即将count从bottom到top依次赋值给matrix[i][left],同时count加一。
12. 当left列填充完后,将left加一,表示左边界已经向右移动一列。
13. 当while循环结束后,即每个位置都被正确填充了之后,我们输出matrix即可。
下面是具体的代码实现:
```python
def generateMatrix(n):
matrix = [[0] * n for _ in range(n)]
top, bottom, left, right = 0, n - 1, 0, n - 1
count = 1
while left <= right and top <= bottom:
for i in range(left, right + 1):
matrix[top][i] = count
count += 1
top += 1
for i in range(top, bottom + 1):
matrix[i][right] = count
count += 1
right -= 1
for i in range(right, left - 1, -1):
matrix[bottom][i] = count
count += 1
bottom -= 1
for i in range(bottom, top - 1, -1):
matrix[i][left] = count
count += 1
left += 1
return matrix
n = 5
matrix = generateMatrix(n)
for row in matrix:
print(row)
```
以上代码会输出一个5×5的回型方阵:
```
[1, 1, 1, 1, 1]
[2, 0, 0, 0, 1]
[2, 0, 0, 0, 1]
[2, 0, 0, 0, 1]
[2, 2, 2, 2, 2]
```
阅读全文