回形取数
来源:互联网 发布:fanuc数控仿真软件 编辑:程序博客网 时间:2024/06/07 18:56
问题描述
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入格式
输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
输出格式
输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
样例输入
3 3
1 2 3
4 5 6
7 8 9
样例输出
1 4 7 8 9 6 3 2 5
样例输入
3 2
1 2
3 4
5 6
样例输出
1 3 5 6 4 2
#include <iostream>using namespace std;int main(){ int num[201][201]={0},m,n,i,k,j; cin>>m>>n; for(i=1;i<=m;i++) { for(k=1;k<=n;k++) { cin>>num[i][k]; } } k=1; i=0,j=1;//初始行置为0 while(k<=m*n) { while(i+1<=m&&num[i+1][j]!=-1)//向下取数 { cout<<num[++i][j]<<" "; num[i][j]=-1;//将取过的位置置为-1 k++; } while(j+1<=n&&num[i][j+1]!=-1)//向右取数 { cout<<num[i][++j]<<" "; num[i][j]=-1; k++; } while(i-1>0&&num[i-1][j]!=-1)//向上取数 { cout<<num[--i][j]<<" "; num[i][j]=-1; k++; } while(j-1>0&&num[i][j-1]!=-1)//向左取数 { cout<<num[i][--j]<<" "; num[i][j]=-1; k++; } } cout<<endl; return 0;}
阅读全文
0 0
- 回形取数
- 回形取数
- 回形取数
- 回形取数
- 回形取数
- 回形取数
- 回形取数
- 回形取数
- 回形取数
- 回形取数
- 回形取数
- 17.回形取数
- 基础训练 回形取数
- 蓝桥杯:回形取数
- 搜索回形取数
- A1068. 回形取数
- 蓝桥杯 回形取数
- 蓝桥杯:回形取数
- QT学习源网址转载1---QT多线程参数传递(信号与槽)方法
- BadNeighbors
- 健康一直都在,太一三和守护。
- NC反弹的小demo
- java中“53”个关键字(含2个保留字)
- 回形取数
- 剑指offer-第一个只出现一次的字符
- Java方法——方法定义,方法重载,参数和返回值
- 【笔记】关于EditPlus配置 Java 编译环境
- Qt中动态实现语言国际化
- sessionStorage 、localStorage和cookies区别(转)
- js中的表格table操作
- python实现之K-均值聚类
- 全连接层解析——源码解析