在编程的世界里,螺旋矩阵是一个经典的算法问题,它考验了我们对二维数组和循环逻辑的理解。🌟今天,让我们用C++来轻松搞定这个题目吧!题目要求:给定一个正整数 `n`,输出一个 `n×n` 的螺旋矩阵。例如,当 `n=3` 时,输出如下:
```
123
894
765
```
首先,我们需要定义一个二维数组来存储结果。然后,通过四个方向(右、下、左、上)模拟螺旋路径,并用一个计数器记录填充值。当遍历完所有位置后,即可得到最终答案。💡
代码实现并不复杂,关键是边界条件的处理和方向切换逻辑。以下是一个简单的框架:
```cpp
include
using namespace std;
void generateSpiralMatrix(int n) {
int matrix[n][n];
int num = 1;
int top = 0, bottom = n-1, left = 0, right = n-1;
while (top <= bottom && left <= right) {
for (int i = left; i <= right; ++i) matrix[top][i] = num++;
top++;
for (int i = top; i <= bottom; ++i) matrix[i][right] = num++;
right--;
if (top <= bottom) {
for (int i = right; i >= left; --i) matrix[bottom][i] = num++;
bottom--;
}
if (left <= right) {
for (int i = bottom; i >= top; --i) matrix[i][left] = num++;
left++;
}
}
// 输出结果
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) cout << matrix[i][j] << "\t";
cout << endl;
}
}
int main() {
int n;
cout << "请输入n的值:" << endl;
cin >> n;
generateSpiralMatrix(n);
return 0;
}
```
通过这段代码,你可以快速生成任意大小的螺旋矩阵。💪快来试试吧,看看你能画出多大的螺旋矩阵!✨