/*对于任意的M×M方阵,编程按照下面的规律对其初始化并输出。
特别说明:方阵行列数不超过20。
输入
方阵的行列数
输出
输出螺旋矩阵,每个数字占三个字符的宽度,右对齐,同行相邻两个数字间用一个空格隔开,每行最后一个数字后面没有空格。
样例输入
7
样例输出
1 2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
*/
#include<stdio.h>
#define M 22
int main()
{
int a[M][M];
int i,j,n,N;
int num=1;
scanf("%d",&N);//n为计数行
for(n=1;n<=N;n++)
{
for(i=n;i<=N-n+1;i++)//转变各个方向
a[n][i]=num++;
for(j=n+1;j<=N-n+1;j++)
a[j][i-1]=num++;
for(i=N-n;i>=n;i--)
a[j-1][i]=num++;
for(j=N-n;j>=n+1;j--)
a[j][i+1]=num++;
}
for(i=1;i<=N;i++)
{ for(j=1;j<=N;j++)
{printf("%3d",a[i][j]);
if(j!=N)
putchar(' ');
}
putchar('\n');
}
return 0;
}