题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1
#include <stdio.h> int main() { int zu[100][100] = { 0 }; int shu = 1; int n,i1,i2; int x = 0, y = 0; scanf("%d", &n); for (i1 = 1; i1 <= n; i1++) { if (1 == i1 % 2) { for (i2 = 0; i2 < i1; i2++) { zu[x][y] = shu++; if (i2 + 1 != i1) { x = x - 1; y = y + 1; } } y = y + 1; }//向上循环 else { for (i2 = 0; i2 < i1; i2++) { zu[x][y] = shu++; if (i2 + 1 != i1) { x = x+1; y = y-1; } } x = x + 1; }//向下循环 }//上半部分 if (1 == n % 2) { x = x + 1; y = y - 1; } else { x = x - 1; y = y + 1; }//下半部分开始 for (i1 =n-1; i1>0; i1--) { if (1 == i1 % 2) { for (i2 = 0; i2 < i1; i2++) { zu[x][y] = shu++; if (i2 + 1 != i1) { x = x - 1; y = y + 1; } } x = x + 1; }//向上循环 else { for (i2 = 0; i2 < i1; i2++) { zu[x][y] = shu++; if (i2 + 1 != i1) { x = x + 1; y = y - 1; } } y = y + 1; }//向下循环 }//上半部分 for (i1 = 0; i1 < n;i1++) { for (i2 = 0; i2 < n;i2++) { printf("%d ", zu[i1][i2]); } printf("\n"); } return 0; }