题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1
#include <stdio.h> int main() { int n; while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf("%lld") to int i = 0; int j = 0; int p = 0; int q = 0; int num = 0;//要赋值的数 int k = 0; int arr[1000][1000] = { 0 }; p = 0; while (k++ < 2 * n - 1) { //左下角 if (k % 2 == 1 && k <= n)//向右上 { for (; i < n && i >= 0 && j >= 0 && j < n; i--, j++) { arr[i][j] = ++num; } i++; } else if (k <= n) {//向左下 for (; i < n && i >= 0 && j >= 0 && j < n; i++, j--) { arr[i][j] = ++num; } j++; } else {//右下角 if (k % 2 == 1)//向右上 { if (k == n + 1) { i--; j++; } for (; i < n && i >= 0 && j >= 0 && j < n; i--, j++) { arr[i][j] = ++num; } i++; i++; j--; } else {//向左下 if (k == n + 1) { i++; j--; } for (; i < n && i >= 0 && j >= 0 && j < n; i++, j--) { arr[i][j] = ++num; } i--; j++; j++; } } } //k==2*n for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d ", arr[i][j]); } printf("\n"); } } return 0; }