给你一个N行N列的方格矩阵,从外圈按顺时针依次填写自然数,这会构成一个螺旋阵,你能编程实现吗?
时间: 2024-03-15 07:44:41 浏览: 72
可以的,下面是一个Python实现的代码:
```python
def generate_spiral_matrix(n):
matrix = [[0] * n for _ in range(n)]
num = 1
for layer in range((n + 1) // 2):
# 上边界
for i in range(layer, n - layer):
matrix[layer][i] = num
num += 1
# 右边界
for i in range(layer + 1, n - layer):
matrix[i][n - layer - 1] = num
num += 1
# 下边界
for i in range(layer + 1, n - layer):
matrix[n - layer - 1][n - i - 1 + layer] = num
num += 1
# 左边界
for i in range(layer + 1, n - layer - 1):
matrix[n - i - 1 + layer][layer] = num
num += 1
return matrix
```
该函数接受一个整数 `n` 作为输入,返回一个 `n` 行 `n` 列的螺旋矩阵。该函数的实现采用了模拟的方式,按照顺时针方向依次填写自然数,最终生成一个螺旋矩阵。
阅读全文