所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
输入
输入在一行中给出一个正整数N(<10)。
输出
输出N×N的螺旋方阵。每行N个数字,每个数字占3位。
所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
输入
输入在一行中给出一个正整数N(<10)。
输出
输出N×N的螺旋方阵。每行N个数字,每个数字占3位。
样例查看模式
正常显示
查看格式
输入样例1 <-复制
5
输出样例1
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
输入样例2 <-复制
9
输出样例2
1 2 3 4 5 6 7 8 9
32 33 34 35 36 37 38 39 10
31 56 57 58 59 60 61 40 11
30 55 72 73 74 75 62 41 12
29 54 71 80 81 76 63 42 13
28 53 70 79 78 77 64 43 14
27 52 69 68 67 66 65 44 15
26 51 50 49 48 47 46 45 16
25 24 23 22 21 20 19 18 17
#include<stdio.h>
int main()
{
int n,i,j=0,k,l,cnt=1;
scanf("%d",&n);
k=0;l=n-1;
int a[n][n];
while(k<=l)
{
for(j=k;j<=l;j++,cnt++)
a[k][j]=cnt;//向右
for(i=k+1;i<=l;i++,cnt++)
a[i][l]=cnt;//向下
for(j=l-1;j>=k;j--,cnt++)
a[l][j]=cnt;//向左
for(i=l-1;i>k;i--,cnt++)
a[i][k]=cnt;//向上
k++;l--;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
return 0;
}