关于输出螺旋方阵的问题
下面是5×5的螺旋方阵。请编程生成n×n(n<10)阶方阵。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>
#define sz 5
void spma(int *p,int n)
{//行程开关方式设置螺旋矩阵
int a[4][2]={1,0,0,1,-1,0,0,-1}; //设定行程开关
int i,j,k,l,m,i1,j1;
for(i=0;i<n*n;i++)p[i]=0;
for(l=0,k=0,i=0,j=0;l<n*n;l++)
{
i1=i;
j1=j;
m=i*n+j;
p[m]=l+1;
i1+=a[k][0];
j1+=a[k][1];
if(i1==n||j1==n||i1<0||j1<0||p[i1*n+j1])
{
k++;
if(k==4)k=0; //调节行程开关
}
i+=a[k][0];
j+=a[k][1];
}
}
void main()
{
int a[sz][sz];
int i,j;
spma(&a[0][0],sz);
for(i=0;i<sz;i++)
{
for(j=0;j<sz;j++)printf("%d\t",a[j][i]);
printf("\n");
}
}

