Files
python/TangDou/CSP-J/J2-2022/XieZheBianLi.cpp
HuangHai 1f397eca87 'commit'
2025-08-30 18:35:01 +08:00

110 lines
2.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}