请用C++编写以下题目 题目描述 输入一个整数N,输出一个N行N列的二维矩阵,矩阵中的元素用1——N*N顺序螺旋填充。 输入格式 一个整数N(N<=10) 输出格式 输出N行N列的矩阵,元素之间用一个空格隔开,行末不要有多余的空格。 样例输入 3 样例输出 1 2 3 8 9 4 7 6 5
时间: 2023-11-26 20:37:14 浏览: 199
以下是使用 C++ 编写的解决方案:
```cpp
#includeiostream>
#include <vector>
using namespace stdvector<vector<int>> generateSpiralMatrix(int) {
vector<vector<int>> matrix(n, vector<int>(n));
int num = 1;
int rowBegin =0, rowEnd = n - 1;
int colBegin = , colEnd = n - 1;
while (num <= n * n) {
for (int i = colBegin; i <= colEnd; i++) {
matrix[rowBegin][i] = num++;
}
rowBegin++;
for (int i = rowBegin; i <= rowEnd; i++) {
matrix[i][colEnd] = num++;
}
colEnd--;
for (int i = colEnd; i >= colBegin; i--) {
matrix[rowEnd][i] = num++;
}
rowEnd--;
for (int i = rowEnd; i >= rowBegin; i--) {
matrix[i][colBegin] = num++;
}
colBegin++;
}
return matrix;
}
int main() {
int N;
cin >> N;
vector<vector<int>> spiralMatrix = generateSpiralMatrix(N);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cout << spiralMatrix[i][j];
if (j < N - 1) {
cout << " ";
}
}
cout << endl;
}
return 0;
}
```
你可以将上述代码保存为一个名为 "spiral_matrix.cpp" 的文件,并使用 C++ 编译器进行编译和运行。输入整数 N,然后输出 N 行 N 列的螺旋矩阵。
阅读全文