当前位置: 代码迷 >> 综合 >> xdoj 1055: 如此遍历
  详细解决方案

xdoj 1055: 如此遍历

热度:40   发布时间:2023-10-29 01:15:51.0

1055: 如此遍历
时间限制: 1 Sec 内存限制: 128 MB
提交: 155 解决: 43
[提交][状态][讨论版]
题目描述
已知一个n*m的矩阵,希望你能按照下图所示的规律进行遍历,并把遍历的结果输出。

对于如图,遍历的结果为:
1 4 2 3 5 7 8 6 9

输入
多组数据

每组数据第一行输入n,m(1<=n,m<=50),表示矩阵的大小。

接下来n行,每行包括m个正整数,表示矩阵每行m个元素。

输出
输出遍历结果,并换行

样例输入
3 3
1 2 3
4 5 6
7 8 9
3 4
1 2 3 4
5 6 7 8
9 10 11 12
样例输出
1 4 2 3 5 7 8 6 9
1 5 2 3 6 9 10 7 4 8 11 12
提示
来源
2015西电ACM校赛

#include<stdio.h> 
int main()
{int m,n,i,j,x,y;while(scanf("%d %d",&m,&n)!=EOF){int a[m][n],d[m*n];for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);}}d[0]=a[0][0];x=0;y=0;int k=0;while(k<m*n){if(x<m-1)d[++k]=a[++x][y];elsed[++k]=a[x][++y];while(x>0&&y<n-1){d[++k]=a[--x][++y];}if(y<n-1)d[++k]=a[x][++y];elsed[++k]=a[++x][y];while(x<m-1&&y>0){d[++k]=a[++x][--y];}}for(i=0;i<m*n-1;i++)printf("%d ",d[i]); printf("%d\n",d[m*n-1]);}return 0;}