自己写的一个螺旋矩阵的算法,感觉好笨,呵呵,还没想出好办法来,感觉肯定有个很简洁的算法来实现。
?
?
#include<stdio.h> #include<stdlib.h> void SpiralMatrix(int start,int n) { int sm[n][n],i,j; i=j=0; memset(sm,0,sizeof(sm)); int m = n -1 ; for(i=0;i<(n+1)/2;i++) { for(j=i;j<=m;j++) { sm[i][j]=start; start++; } for(j=i+1;j<=m;j++) { sm[j][m]=start; start++; } for(j=m-1;j>=i;j--) { sm[m][j]=start; start++; } for(j=m-1;j>i;j--) { sm[j][i]=start; start++; } m--; } /** * print matrix */ for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%3d ",sm[i][j]); } putchar('\n'); } } int main() { int n = 0; while(1) { printf("Enter the number,0 to quit: "); scanf("%d",&n); if(n<=0) break; else SpiralMatrix(1,n); } system("pause"); return 0; }
?