Problem Description
![](https://i-blog.csdnimg.cn/blog_migrate/7f12c89f4c906c5b4cc9eaf09805e5be.png)
请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。
Input
接下来是m行数据,每行输入一个n(0<n<11)。
Output
两个输出方阵之间输出一个空行。
Example Input
1
4
Example Output
1 2 3 4 12 13 14 5 11 16 15 610 9 8 7
#include<stdio.h> int a[15][15]; void f(int n,int b,int count) { int i; int h,v; if(n==0) return ; if(n==1) { a[b][b]=++count; return ; } h=v=b; a[h][v]=++count; for(i=0;i<n-1;i++) { v++; a[h][v]=++count; } for(i=0;i<n-1;i++) { h++; a[h][v]=++count; } for(i=0;i<n-1;i++) { v--; a[h][v]=++count; } for(i=0;i<n-2;i++) { h--; a[h][v]=++count; } f(n-2,h,count); } int main() { int i,j; int n,m; scanf("%d",&m); while(m--) { scanf("%d",&n); f(n,1,0); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(j!=n) printf("%d\t",a[i][j]); else printf("%d\n",a[i][j]); } } } return 0; }