给你一个整数n,输出n*n的蛇形矩阵。 输入- -行,包含一个整数n 输出n行,每行包含n个正整数,通过空格分隔。1<=n<=1000 用c++代码怎么写用到了什么算法知识
时间: 2024-04-22 08:26:19 浏览: 108
你可以使用以下的C++代码来生成蛇形矩阵:
```cpp
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> generateSnakeMatrix(int n) {
vector<vector<int>> matrix(n, vector<int>(n));
int num = 1;
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
for (int j = 0; j < n; j++) {
matrix[i][j] = num++;
}
} else {
for (int j = n - 1; j >= 0; j--) {
matrix[i][j] = num++;
}
}
}
return matrix;
}
int main() {
int n;
cin >> n;
vector<vector<int>> result = generateSnakeMatrix(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << result[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
这段代码中,`generateSnakeMatrix` 函数生成了一个大小为 n * n 的蛇形矩阵。在主函数中,首先读取输入的整数 n,然后调用 `generateSnakeMatrix` 函数生成蛇形矩阵,并将结果输出。
算法思路是通过两个嵌套的循环来填充矩阵,其中奇数行从左到右填充,偶数行从右到左填充。每次填充一个数,然后递增 num 变量,直到填充完所有的数。
希望对你有帮助!如有疑问,请继续提问。
阅读全文