题解 | #回型矩阵#
回型矩阵
https://www.nowcoder.com/practice/36d5dfddc22c4f5b88a5b2a9de7db343
#include <stdio.h> int main() { int num=1,i=0,j=0,k,left=-1,right,up=0,down,n,flag1=0,flag2=1; int a[19][19]={0}; scanf("%d", &n); down=n-1,right=n-1; for(k=0;k<n*n;k++) { a[i][j]=num++; if(i==up&&j==right) { flag1=1,flag2=0; if (up==down) flag1=0,flag2=-1; } else if(i==down&&j==right) flag1=0,flag2=-1; else if(i==up&&j==left) flag1=0,flag2=1; else if(i==down&&j==left) flag1=-1,flag2=0; i+=flag1,j+=flag2; if(i==up&&j==right) left++; else if(i==down&&j==right) up++; else if(i==up&&j==left) down--; else if(i==down&&j==left) right--; } for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d ",a[i][j]); } printf("\n"); } return 0; }