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'分隔)
两个输出方阵之间输出一个空行。
两个输出方阵之间输出一个空行。
Sample Input
1 4
Sample Output
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
#include<bits/stdc++.h> int A[11][11] ; using namespace std; int matrix(int N,int row ,int clo,int start){ if ( N == 1 ) return 0; if( N == 2){ A[row][++clo] = ++ start ; A[++row][clo] = ++ start; A[row][--clo] = ++ start; return 0; } for(int j = N ; j > 1 ; j--){ A[row][++clo] = ++ start ; } for( int j = N ; j > 1 ;j--){ A[++row][clo] = ++ start; } for( int j = N ; j > 1 ;j--){ A[row][--clo] = ++ start; } for( int j = N ; j > 2 ;j--){ A[--row][clo] = ++ start; } A[row][++clo] = ++start; matrix(N-2,row,clo,start); } int main(){ int T,N; cin>>T; while(T-- >0 ){ for(int i = 1 ; i <= 10 ; i++ ) memset(A[i],*A[i]+9,0); cin >> N; A[1][1] = 1; matrix(N,1,1,1); for(int i =1 ; i <=N ; i++ ){ for(int j =1 ; j <=N ; j++ ){ cout << A[i][j]; if (j < N ) cout << "\t"; } cout << endl; } if( T > 0 ) cout << endl; } }