题解 | 蛇形矩阵
利用每一个斜行的索引相加为定值,设为add,每加一斜行就加一
#include <stdio.h>
int main() {
int n, arr[1000][1000];
scanf("%d", &n);
int count = 0;
int add = 0;
int num = 0;
while (count < n * n) {
if (add < n) {
if (add % 2 == 0) {
for (int i = add; i >= 0; i--) {
arr[i][add - i] = (++num);
count++;
}
add++;
} else {
for (int i = 0; i <= add; i++) {
arr[i][add - i] = ++num;
count++;
}
add++;
}
} else {
if (add % 2 == 0) {
int i = n;
while ((add - i) < (n - 1)) {
--i;
arr[i][add - i] = (++num);
count++;
}
add++;
} else {
int j = n;
while ((add - j) < (n - 1)) {
--j;
arr[add - j][j] = (++num);
count++;
}
add++;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
return 0;
}
查看2道真题和解析