51、矩阵式螺旋输出
/* 51、矩阵式螺旋输出 */ #include<iostream> #include<stdio.h> #define N 100 using namespace std; int map[N][N],vis[N][N]; int main() { int n,m,i,j,tot; while(scanf("%d%d",&n,&m),n+m) { memset(vis,0,sizeof(vis)); printf("%d行%d列矩阵式螺旋输出\n",n,m); tot=1;i=0;j=0; while(tot<=n*m) { while(i<n&&!vis[i][j]) { map[i][j]=tot++; vis[i][j]=1; i++; } i--;j++; while(j<m&&!vis[i][j]) { map[i][j]=tot++; vis[i][j]=1; j++; } j--;i--; while(i>=0&&!vis[i][j]) { map[i][j]=tot++; vis[i][j]=1; i--; } i++;j--; while(j>=0&&!vis[i][j]) { map[i][j]=tot++; vis[i][j]=1; j--; } j++;i++; } for(i=0;i<n;i++) { for(j=0;j<m;j++) printf("%4d",map[i][j]); printf("\n"); } printf("\n"); } return 0; }