らせん隊列
4186 ワード
クリックして元のリンクを取得します.
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
n×n n=5 n=3
![ ](http://acm.sdut.edu.cn/image/1295.png)
, n(0<n<11), n×n 。
Input
m(0<m<10), m ;
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
using namespace std;
int a[20][20]; ///
void fill(int number,int begin,int size)/// ( , , )
{
if(size==0)/// 0
return ;
else if(size==1)/// 1
{
a[begin][begin]=number;
return;
}
int i=begin;///
int j=begin;///
for(int k=1; k<=size; k++,number++,j++) ///
{
a[i][j]=number;
}
i++;///
j--;///
for(int k=1; k<=size-1; k++,number++,i++) ///
{
a[i][j]=number;
}
j--;
i--;
for(int k=1; k<=size-1; k++,number++,j-- ) ///
{
a[i][j]=number;
if(k==size-1)//
{
number++;
break;
}
}
i--;
for(int k=1; k<=size-2; k++,number++,i--) ///
{
a[i][j]=number;
}
fill(number,begin+1,size-2);///
}
int main()
{
int T;
cin>>T;
while(T--)///N
{
int n;
cin>>n;
fill( 1,1,n);/// , ,
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cout<if(j=n)
{
cout<else cout>
)
)
)
)