螺旋方阵

3/8/2017来源:ASP.NET技巧人气:2231

所谓“螺旋方阵”,是指对任意给定的NNN,将1到N×NN\times NN×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×NN\times NN×N的方阵里。本题要求构造这样的螺旋方阵。

输入格式:

输入在一行中给出一个正整数NNN(<10<10<10)。

输出格式:

输出N×NN\times NN×N的螺旋方阵。每行NNN个数字,每个数字占3位。

输入样例:

5

输出样例:

1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9

#include<stdio.h> int main() {     int a[10][10]={0};     int i,j,flag,count;     int n,m,u,ans,k;     scanf("%d",&n);     m=ans=i=j=count=0;     u=n; k=n*n;     while(ans<k)     {         while(j<n&&(ans<k))         {             a[i][j]=++count;             ++ans;             if(j==n-1)                 break;             j++;         }         i++;         while(i<n&&(ans<k))         {             a[i][j]=++count;             ++ans;             if(i==n-1)                 break;             i++;         }         j--;         while(j>=m&&(ans<k))         {             a[i][j]=++count;             ++ans;             if(j==m)                  break;             j--;         }         m++;         i--;         while(i>=m&&(ans<k))         {             a[i][j]=++count;             ++ans;             if(i==m)                 break;             i--;         }         j++;         n--;     }     for(i=0;i<u;i++)     {         for(j=0;j<u;j++)         {             PRintf("%3d",a[i][j]);         }         printf("\n");     } }