题解 | #回型矩阵#
回型矩阵
https://www.nowcoder.com/practice/36d5dfddc22c4f5b88a5b2a9de7db343
#include <stdio.h> int main() { int n=0; int i1 = 0, i2 = 0; int c = 1;//循环减小t判断 int shu = 1;//1到n数 int zu[100][100] = { 0 }; int t; scanf("%d", &n); for (i2 = 0; i2 < n; i2++) { zu[0][i2] = shu++; } for (i1 = 1; i1 < (n * 2 - 1); i1++) { switch (c%4)//下左上右 { case 1: t = 0; for (i2 = (c-1)/2; i2 <n-1; i2++) { zu[(c - 1) / 4 +1+t++][n- (c - 1) / 4 -1] = shu++; } c++; break; case 2: t = 0; for (i2 = (c - 1) / 2; i2 < n-1; i2++) { zu[n - (c - 1) / 4-1][n - (c - 1) / 4 -2+t--] = shu++; } c++; break; case 3: t = 1; for (i2 = (c - 1) / 2; i2 < n-1; i2++) { zu[n -t++-1-(c - 1) / 4][(c - 1) / 4 ] = shu++; } c++; break; case 0: t = 1; for (i2 = (c - 1) / 2; i2 < n - 1; i2++) { zu[(c - 1) / 4+1][(c - 1) / 4 +(t++)] = shu++; } c++; break; } } for (i1 = 0; i1 < n; i1++) { for (i2 = 0; i2 < n;i2++) { printf("%d ", zu[i1][i2]); } printf("\n"); } return 0; }