螺旋方阵
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
n×n的螺旋方阵当n=5和n=3时分别是如下的形式
请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。

请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。
Input
输入第一行为整数m(0<m<10),代表有m组输入;
接下来是m行数据,每行输入一个n(0<n<11)。
接下来是m行数据,每行输入一个n(0<n<11)。
Output
按照输入的次序,依次输出每一个n×n方阵(一个方阵的同一行数据之间以'\t'分隔)
两个输出方阵之间输出一个空行。
两个输出方阵之间输出一个空行。
Example Input
1 4
Example Output
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
Hint
Author
#include <stdio.h> //整数N分解问题
int a[100][100]={};
void luoxuan(int l,int r,int u,int d,int v)
{
int i;
if(r>=l)
{
for(i=l; i<=r; i++)
a[u][i]=v++;
for(i=u+1; i<d; i++)
a[i][r]=v++;
for(i=r; i>l; i--)
a[d][i]=v++;
for(i=d; i>u; i--)
a[i][l]=v++;
luoxuan(l+1,r-1,u+1,d-1,v);
}
}
int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
luoxuan(0,n-1,0,n-1,1);
for(i=0; i<n; i++)
{
for( j=0; j<n-1; j++)
printf("%d\t",a[i][j]);
printf("%d\n",a[i][j]);
}
}
return 0;
}
int a[100][100]={};
void luoxuan(int l,int r,int u,int d,int v)
{
int i;
if(r>=l)
{
for(i=l; i<=r; i++)
a[u][i]=v++;
for(i=u+1; i<d; i++)
a[i][r]=v++;
for(i=r; i>l; i--)
a[d][i]=v++;
for(i=d; i>u; i--)
a[i][l]=v++;
luoxuan(l+1,r-1,u+1,d-1,v);
}
}
int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
luoxuan(0,n-1,0,n-1,1);
for(i=0; i<n; i++)
{
for( j=0; j<n-1; j++)
printf("%d\t",a[i][j]);
printf("%d\n",a[i][j]);
}
}
return 0;
}