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