|
|
|
|
#include <iostream>
|
|
|
|
|
#define SIZE 3 // SIZE来控制数组宽度
|
|
|
|
|
using namespace std;
|
|
|
|
|
const int S = 20; //数组的容器大小
|
|
|
|
|
int a[S][S];
|
|
|
|
|
//一个输出函数
|
|
|
|
|
void display() {
|
|
|
|
|
int i, j;
|
|
|
|
|
for (i = 0; i < SIZE; i++) {
|
|
|
|
|
for (j = 0; j < SIZE; j++) {
|
|
|
|
|
cout << a[i][j] << " ";
|
|
|
|
|
}
|
|
|
|
|
cout << endl;
|
|
|
|
|
}
|
|
|
|
|
cout << endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// https://blog.csdn.net/BppleMan/article/details/50456645?locationNum=2&fps=1
|
|
|
|
|
// 关于45度遍历二维数组的一点记录
|
|
|
|
|
int main(int argc, const char *argv[]) {
|
|
|
|
|
int x, y, count = 1;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
1 3 6
|
|
|
|
|
2 5 8
|
|
|
|
|
4 7 9
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 2 * SIZE - 1就是扫描行的最大行数
|
|
|
|
|
for (y = 0; y < 2 * SIZE - 1; y++) {
|
|
|
|
|
for (x = 0; x < SIZE; x++) {
|
|
|
|
|
//控制纵坐标的范围是0~SIZE
|
|
|
|
|
if (y - x >= 0 && y - x < SIZE)
|
|
|
|
|
//通过找规律的到y与x的关系以此确定纵坐标
|
|
|
|
|
a[y - x][x] = count++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
display();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
1 2 4
|
|
|
|
|
3 5 7
|
|
|
|
|
6 8 9
|
|
|
|
|
*/
|
|
|
|
|
count = 1;
|
|
|
|
|
for (y = 0; y < 2 * SIZE - 1; y++) {
|
|
|
|
|
for (x = 0; x < SIZE; x++) {
|
|
|
|
|
if (y - x >= 0 && y - x < SIZE)
|
|
|
|
|
a[x][y - x] = count++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
display();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
4 2 1
|
|
|
|
|
7 5 3
|
|
|
|
|
9 8 6
|
|
|
|
|
*/
|
|
|
|
|
count = 1;
|
|
|
|
|
for (y = 0; y < 2 * SIZE - 1; y++) {
|
|
|
|
|
for (x = 0; x < SIZE; x++) {
|
|
|
|
|
if (x + y - (SIZE - 1) >= 0 && x + y - (SIZE - 1) < SIZE)
|
|
|
|
|
a[x + y - (SIZE - 1)][x] = count++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
display();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
6 3 1
|
|
|
|
|
8 5 2
|
|
|
|
|
9 7 4
|
|
|
|
|
*/
|
|
|
|
|
count = 1;
|
|
|
|
|
for (y = 0; y < 2 * SIZE - 1; y++) {
|
|
|
|
|
for (x = SIZE - 1; x >= 0; x--) {
|
|
|
|
|
if (x + y - (SIZE - 1) >= 0 && x + y - (SIZE - 1) < SIZE)
|
|
|
|
|
a[x + y - (SIZE - 1)][x] = count++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
display();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
6 8 9
|
|
|
|
|
3 5 7
|
|
|
|
|
1 2 4
|
|
|
|
|
*/
|
|
|
|
|
count = 1;
|
|
|
|
|
for (y = 0; y < 2 * SIZE - 1; y++) {
|
|
|
|
|
for (x = SIZE - 1; x >= 0; x--) {
|
|
|
|
|
if (x + y - (SIZE - 1) >= 0 && x + y - (SIZE - 1) < SIZE)
|
|
|
|
|
a[x][x + y - (SIZE - 1)] = count++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
display();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
4 7 9
|
|
|
|
|
2 5 8
|
|
|
|
|
1 3 6
|
|
|
|
|
*/
|
|
|
|
|
count = 1;
|
|
|
|
|
for (y = 0; y < 2 * SIZE - 1; y++) {
|
|
|
|
|
for (x = 0; x < SIZE; x++) {
|
|
|
|
|
if (x + y - (SIZE - 1) >= 0 && x + y - (SIZE - 1) < SIZE)
|
|
|
|
|
a[x][x + y - (SIZE - 1)] = count++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
display();
|
|
|
|
|
return 0;
|
|
|
|
|
}
|