题解 | 蛇形矩阵
利用每一个斜行的索引相加为定值,设为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; }