1 3 8 20 3 2 5 12 8 5 3 7 20 12 7 4 按规律输出n*n的矩阵 请用c++语言
时间: 2024-01-02 07:05:15 浏览: 65
下面是按照规律输出n*n的矩阵的C++代码:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n; // 输入矩阵的大小n
int a[n][n]; // 定义一个n*n的二维数组
int index = 0, x = 0, y = 0; // 初始化参数
int dx[4] = {0, 1, 0, -1}; // 定义x轴的四个方向
int dy[4] = {1, 0, -1, 0}; // 定义y轴的四个方向
for (int i = 1; i <= n * n; i++) {
a[x][y] = i; // 将当前数字填入矩阵中
int nx = x + dx[index % 4]; // 计算下一个数字的位置
int ny = y + dy[index % 4];
if (nx < 0 || nx >= n || ny < 0 || ny >= n || a[nx][ny] != 0) { // 判断是否需要转向
index++;
nx = x + dx[index % 4];
ny = y + dy[index % 4];
}
x = nx;
y = ny;
}
for (int i = 0; i < n; i++) { // 输出矩阵
for (int j = 0; j < n; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
这段代码中,我们使用了一个二维数组来存储矩阵的数字,同时使用了一个index变量来记录当前方向,dx和dy数组来表示四个方向,以及x和y来表示当前数字的位置。在填充数字的过程中,每次计算下一个数字的位置,如果超出边界或者已经填过数字,就需要转向。最后输出矩阵即可。
阅读全文