螺旋矩阵
一个n行n列的螺旅矩阵可由如下方法生成:
从矩阵的左上角(第1行第 1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入1.2.3...n,便构成了一个螺旋矩阵。下图是一个n=4时的螺旋矩阵。
搜了一圈感觉没人是和我用同一种方法的,我就把自己想的方法发了上来,想了大概一个多小时,方法非常暴力。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][n],i,j=0,x=n-1,y=1,z=0;
while(--x)
{
for(i=z;i<z+n-j;i++)
a[z][i]=y++;
for(i=z+1;i<n-z;i++)
a[i][n-z-1]=y++;
for(i=n-z-2;i>=z;i--)
a[n-z-1][i]=y++;
for(i=n-z-2;i>z;i--)
a[i][z]=y++;
j=j+2;z++;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
j==n-1?printf("%d\n",a[i][j]):printf("%d\t",a[i][j]);
}