所谓“螺旋方阵”,是指对任意给定的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"); } }