Description
n×n的螺旋方阵当n=5和n=3时分别是如下的形式 请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。Input
输入第一行为整数m(0<m<10),代表有m组输入; 接下来是m行数据,每行输入一个n(0<n<11)。Output
按照输入的次序,依次输出每一个n×n方阵(一个方阵的同一行数据之间以'\t'分隔) 两个输出方阵之间输出一个空行。Sample Input
1 4Sample Output
1 2 3 412 13 14 511 16 15 610 9 8 7
代码: #if 1 #include<bits/stdc++.h> using namespace std; int main() { int m , a[20][20] ; cin>> m ; int ax[]={0,1,0,-1} ,ay[] ={1,0,-1,0 } ; //控制方向 while (m--) { int n; cin>>n; memset(a,0,sizeof(a)) ; int nx=0 , ny=0 ,x=0,y=0,k=0; for(int i=0 ;i<n*n ;i++) { a[x][y] =i+1 ; nx = x+ ax[k] ; ny= y+ay[k] ; if(nx==n||nx<0||ny==n||ny<0||a[nx][ny]!=0) { k=(k+1)%4 ; nx= x+ ax[k] ; ny =y +ay[k] ; } x= nx ; y=ny ; //确定 要去的 方向 } for (int i=0 ;i< n ;i++) { for(int j=0 ;j< n ;j++) cout<< a[i][j] <<" \t" ; cout<<endl; } } } #endif