← 返回文章流

蓝桥杯 基础练习 回形取数

问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 样例输入 1 2 3 4 3 3 1 2 3 4 5 6 7 8 9 样例输出 1 2 3 1 4 7 8 9 6 3 2 5 样例输入 1 2 3 4 3 2 1 2 3 4 5 6 样例输出 1 3 5 6 4 2 C++算法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include<stdio.h> int main() { int m,n; scanf("%d %d",&m,&n); int s[200][200]; int a[200][200]; int i,j; for(i=0;i<m;i++) for(j=0;j<n;j++) { scanf("%d",&s[i][j]); a[i][j]=-1; } int k=0,b=m-1,c=n-1; int h=0; for(i=j=h;a[i][j]==-1&&k<=m*n;) { if(k<m*n) printf("%d ",s[i][j]); else printf("%d",s[i][j]); k++; a[i][j]=0; if(i<b&&a[i+1][j]==-1&&j==n-1-c) { i++; continue; } if(i==b&&a[i][j+1]==-1) { j++; continue; } if(j==c&&a[i-1][j]==-1) { i--; continue; } if(i==m-1-b&&a[i][j-1]==-1) { j--; continue; } i=j=(++h); b--;c--; } return 0; } 关注微信公众号,第一时间获取最新内容,让我们一起变得更强!Debug客栈:订阅本站· 文章归档· 我的项目· 友情链接· 我的使用· 飞湾计划· 摄影展集· 我的主页· 知盈官网

来自 Debug客栈作者主页
在原博客阅读全文 (新标签页打开)

以上内容来自博客订阅源,版权归原作者。关注作者后可以在 关注列表 第一时间查看作者文章。

一起聊聊 0

尊重不同观点

还没有评论。欢迎分享第一个想法。

RSS SUBSCRIPTIONS

选择 RSS 订阅

把博客汇的文章添加到你常用的阅读器。

关注文章 RSS 订阅本订阅需要登录后使用