算法-打印 N*N 螺旋矩阵
|
关于这个算法,有很多版本,我自认为这个比容易理解。
Code: int Matrix[20][20];
void Translate(int n) { int i,j,count=0;
memset(Matrix,0,sizeof(Matrix)); Matrix[i=0][j=0]=++count;
while(count<n*n) { while (j+1<n&&Matrix[i][j+1]==0) { Matrix[i][++j]=++count; } while (i+1<n&&Matrix[i+1][j]==0) { Matrix[++i][j]=++count; } while (j-1>=0&&Matrix[i][j-1]==0) { Matrix[i][--j]=++count; } while(i-1>=0&&Matrix[i-1][j]==0) { Matrix[--i][j]=++count; } } }
void Output(int n) { Translate(n); int i,j; for (i=0;i<n;i++) { for (j=0;j<n;j++) { printf("%4d",Matrix[i][j]); } printf("\n"); } } |
浙公网安备 33010602011771号