关于输出螺旋方阵的问题
											下面是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");
    }
}

