递推递归练习O - 螺旋方阵

    xiaoxiao2021-04-13  27

    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 4

    Sample 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

    转载请注明原文地址: https://ju.6miu.com/read-669439.html

    最新回复(0)