Problem Description
请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。
Input
接下来是m行数据,每行输入一个n(0<n<11)。
Output
两个输出方阵之间输出一个空行。
Sample Input
1 4
Sample Output
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
Hint
Source
#include<stdio.h>
int a[20][20];
void f(int left,int right,int up,int down,int V)
{
int i ,j ,k ,l;
if(left<=right)
{
for(i = left; i<=right; i++)
a[up][i] = V++;
for(j = up+1; j<=down; j++)
a[j][right] = V++;
for(k = right-1; k>=left; k--)
a[down][k] = V++;
for(l = down-1; l>up; l--)
a[l][left] = V++;
f(left+1,right-1,up+1,down-1,V);
}
}
int main()
{
int n,m,i,j;
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
f(1,n,1,n,1);
for(i = 1; i<=n; i++)
{
for(j = 1; j<n; j++)
printf("%d\t",a[i][j]);
printf("%d\n",a[i][j]);
}
printf("\n");
}
return 0;
}