C++n x n 方阵里填入1,2,···,n x n,要求填成蛇形。例如,n = 4 时方阵为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4
时间: 2024-12-24 14:35:08 浏览: 14
在C++中,为了生成一个n x n的矩阵,按照蛇形从左上角开始填充数字1到n*n,可以使用嵌套循环并逐行递增数字。这是一个简单的算法步骤:
1. 定义一个二维数组`matrix`,大小为`n * n`。
2. 初始化当前列`col`为0,初始行`row`为0,当前数字`num`为1。
3. 使用两个嵌套循环:
- 内层循环`for (int i = 0; i < n; ++i)`, 当行数等于当前列数加1时,将行数置回0,并增加当前列数。
- 在内层循环体内,添加当前数字到矩阵`matrix[row][col]`,然后递增数字。
4. 输出矩阵。
下面是一个示例代码片段:
```cpp
#include <iostream>
using namespace std;
void fillSnakeMatrix(int n, int matrix[n][n]) {
int col = 0;
int row = 0;
for (int num = 1; num <= n * n; ++num) {
matrix[row][col] = num;
if (row == col || row + col == n - 1) { // 到达对角线或右下角
col++;
row = (row + 1) % n; // 移动到下一个单元格,按蛇形前进
} else {
row++; // 否则沿着行移动
}
}
}
// 示例:打印矩阵
void printMatrix(int n, int matrix[n][n]) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main() {
int size;
cout << "请输入矩阵大小n: ";
cin >> size;
int matrix[size][size];
fillSnakeMatrix(size, matrix);
printMatrix(size, matrix);
return 0;
}
```
阅读全文