11--回形取数
2018-03-18 15:33
155 查看
基础练习 回形取数 时间限制:1.0s 内存限制:512.0MB 锦囊1循环,标记。锦囊2使用多次循环来处理,也可以对取过的数标记来简化循环的判断。问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转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>
#include<stdio.h>
using namespace std;
int Qu(int a[][200] , int h , int l){
int b[200][200];
//条件1
if(h == 0&& l == 0)
return 0;
//条件2
if(h == 1&& l > 0){
for(int i = 0;i < l;i++)
printf("%d ", a[0][i]);
return 0;
}
//条件3
if(l == 1&&h > 0){
for(int i = 0;i < h;i++)
printf("%d ", a[i][0]);
return 0;
}
for(int i = 0;i < h;i++ )
printf("%d ",a[i][0]);
//向右旋转90度
for(int i = 1;i < l;i++)
for(int j = 0;j < h;j++){
b[i-1][j] = a[h-j-1][i];
}
Qu(b , l-1 , h);
}
int main(){
int m,n;//行、列
scanf("%d%d", &m,&n);
int arr[200][200];
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
scanf("%d",&arr[i][j]);
}
}
Qu(arr , m ,n);
return 0;
}
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>
#include<stdio.h>
using namespace std;
int Qu(int a[][200] , int h , int l){
int b[200][200];
//条件1
if(h == 0&& l == 0)
return 0;
//条件2
if(h == 1&& l > 0){
for(int i = 0;i < l;i++)
printf("%d ", a[0][i]);
return 0;
}
//条件3
if(l == 1&&h > 0){
for(int i = 0;i < h;i++)
printf("%d ", a[i][0]);
return 0;
}
for(int i = 0;i < h;i++ )
printf("%d ",a[i][0]);
//向右旋转90度
for(int i = 1;i < l;i++)
for(int j = 0;j < h;j++){
b[i-1][j] = a[h-j-1][i];
}
Qu(b , l-1 , h);
}
int main(){
int m,n;//行、列
scanf("%d%d", &m,&n);
int arr[200][200];
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
scanf("%d",&arr[i][j]);
}
}
Qu(arr , m ,n);
return 0;
}
相关文章推荐
- 11.2.2 例题 11-2 UVA 1395 Slim Span (最大值-最小值尽可能小的生成树)
- 数据结构与算法分析笔记与总结(java实现)--排序11:有序矩阵查找练习题
- java基础11:正则表达式与反射
- Demo11 :目录操作(列目录下的文件和移动一个目录)
- 【转】oracle instantclient_11_2 用法
- 一步一步学Silverlight 2系列(11):数据绑定
- Jenkins系列之—11 Publish Over SSH插件
- Logstash学习11_Logstash处理时区、类型转换、删除字段的案例配置
- unit11
- python第6周作业——Chapter 11 测试
- RH442-11 网络调优之一
- 数值的整数次方(剑指offer面试题11)
- leetcode 25:Reverse Nodes in k-Group(15-10-11)
- 11、spring的bean基础(3)
- 11.管理网络(linux)
- iOS 11 使用两种方法替换(Method Swizzling)去掉导航栏返回按钮的文字
- 智力题——11.真假处理器
- 一步步学习SPD2010--第四章节--创建和修改网页(11)--关键点
- sdut 在机器上面向对象编程练习11(运算符重载)
- 方法模版模式(设计模式_11)【精品博客】