//蛇形數組01
#include"stdio.h"
#include"stdlib.h"
int main()
{int aa,a,b,bb,n=0,temp=0;
int k[100][100],num;//保存數組的結果
for(int i=0;i<100;i++)
for(int j=0;j<100;j++)
k[i][j]=0;//初始化
scanf("%d",&num);
for(int j=1;j<=num;j+=2)//循環的圈數
{b=a=j/2;//上行,左列
bb=aa=num-j/2-1;//下行,右列
for(int i=temp+1;i<=num*num;)
{n=i-temp;
if(n<=1*(aa-a)) for(int f=b;f<bb;f++){k[a][f]=i;i++;}//以下幾行,嚴格按照蛇形數組的順序遞增的
else if(n<=2*(aa-a)) for(int f=a;f<=aa;f++) {k[f][bb]=i;i++;}
else if(n<=3*(aa-a)) for(int f=bb-1;f>b;f--) {k[aa][f]=i; i++;}
else if(n<=4*(aa-a)) for(int f=aa;f>a;f--) {k[f][b]=i; i++;}
else if(aa==a&&bb==b){ k[aa][bb]=i++;
//break;
}//這個是是num為奇數時的情況
else break;
}
//temp=temp+num*(num-j+1)-4;
temp=temp+(num-j)*4; //每一圈結束的數字
}
for(int i=0;i<num;i++)
{for(int j=0;j<num;j++)
printf("%-4d",k[i][j]);
printf("\n");
}
system("pause");}