UVa 120 - Stacks of Flapjacks
题意:给一摞随意摞的煎饼,要按直径从上到下递增的顺序排列,求翻的顺序。
思路:贪心。
1,读取煎饼数据,新建一个数组,复制数据,排序,作为参考。
2,从最大直径(maxNum)的煎饼开始,看其是否在底层,是的话就寻找上一层最大的。
3,假如不在底层,看其在不在顶层,在顶层就把全部煎饼翻过来,使当前需要操作的最大的直径煎饼放在最下。
4,假如不在底层也不在顶层,就找到它,先翻到顶层,然后步骤同3.
直到maxNum代表数据为最小直径的煎饼。
代码:
#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> #include <algorithm> using namespace std; #define MAXN 110class Flapjacks{private:int jacks[MAXN];int ansJack[MAXN+MAXN];int ansLoop;public:void init();void process();void reserv(int a[],int num);//反转数组操作,num为反转位置void output(); }; void Flapjacks::reserv(int a[],int num){int tempArry[num];for(int loop1 = num - 1,loop2 = 0;loop1 >= 0;loop1--){tempArry[loop2++] = a[loop1];}for(int loop1 = 0;loop1 < num;loop1++){a[loop1] = tempArry[loop1];} } void Flapjacks::init(){memset(jacks,0,sizeof(jacks)); } void Flapjacks::process(){int loop = 0,n;char c;while(scanf("%d%c",&n,&c)!=EOF){if(c != '\n'){printf("%d ",n);jacks[loop++] = n;}else {jacks[loop++] = n;cout<<n<<endl;int clon[MAXN],maxNum;for(int i = 0;i < loop;i++)clon[i] = jacks[i];sort(clon,clon + loop);ansLoop = 0;ansJack[0] = 0;for(int i = loop - 1;i >= 0;i--){maxNum = clon[i];//maxNum 记录当前未正确归位的煎饼if(maxNum == jacks[i]){continue;}else{if(jacks[0] == maxNum){//需要操作的煎饼在最上边时的操作reserv(jacks,i+1);//从loop - i处反转ansJack[ansLoop++] = loop - i;}else{for(int j = 0;j < loop;j++){//需要操作的煎饼在不最上边时的操作if(jacks[j] == maxNum){reserv(jacks,j+1);ansJack[ansLoop++] = loop - j ;break;}}reserv(jacks,i+1);ansJack[ansLoop++] = loop - i;}}}output();loop = 0;init();}} } void Flapjacks::output(){for(int i = 0;i < ansLoop;i++){cout<<ansJack[i]<<" ";}cout<<0<<endl; }int main() {//#ifndef ONLINE_JUDGE// freopen("D:\\acm.txt","r",stdin);// #endif // ONLINE_JUDGE Flapjacks flapjacks;flapjacks.process();return 0; }
转载于:https://www.cnblogs.com/ohxiaobai/p/4491280.html
UVa 120 - Stacks of Flapjacks相关推荐
- uva 120——Stacks of Flapjacks
题意:一个非常有趣的问题,就是给一摞煎饼,然后从下面拿起来一张,然后把该张上面的所有馅饼反转,求最后使得馅饼从小到大的最小的步数. 思路:贪心.每次都把没排好序的最大数反转到最上面,然后在一次反转到最 ...
- Stacks of Flapjacks UVA 薄饼排序问题
// 有点类似栈和队列的操作,但在这里可以用纯数组模拟出来.#include <iostream>#include <cstring>#include <cstdio&g ...
- π-Algorithmist分类题目(3)
原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...
- π-Algorithmist分类题目(1)
原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(1) Sorting UVAL ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- sicily题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- [sicily]部分题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- Sicily 题目分类
依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...
- 编程题目分类(剪辑)
1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...
最新文章
- 大数据环境下该如何优雅地设计数据分层
- Java 二次MD5 32位小写加密算法与php页面加密结果相同
- 设计模式: 自己手动实现一个观察者设计模式
- 理解SQLNET.AUTHENTICATION_SERVICES参数|转|
- 找到比某个数大的最小的2的次幂
- 11、1.4.3 测试JDK安装成功
- Java7任务并行执行神器:ForkJoin框架
- BZOJ 1012 单调队列+二分
- android /data/data/数据作用,android 清除data/data/ 下其他应用的数据
- IntelliJ Idea学习笔记008---Idea左侧栏不显示目录结构_或者只显示一个Project不显示其他东西
- 要是面试官再问我synchronized,我就这么答
- 引用 八卦象数疗法--配方1
- 纠错式教学法对比鼓励式教学法 -----Lily、贝乐、英孚,乐加乐、剑桥国际、优学汇、北外青少...
- 电脑清理(C盘清理,卸载软件以及注册表清理)
- gitbook安装中installing gitbook xxx 时间过长的问题
- git修改commit的用户名与邮箱
- C# 如何减少装箱拆箱
- 2022考研笔记-政治(马原-马克思主义哲学)
- 【NOIP2017提高组】轰炸
- 数学建模-马尔萨斯人口问题
热门文章
- ASP.NET 常用的33种代码(转,收藏一下,以备后查)
- ES6新特性_变量的解构赋值---JavaScript_ECMAScript_ES6-ES11新特性工作笔记006
- RabbitMq学习笔记001---RabbitMq在Windows下安装配置
- EJB3.0学习笔记---定义客户端访问接口:
- Leetcode529. 扫雷游戏
- java有没有自定义好的按钮_java – 带有nimbus的自定义JButton
- 嵌入式电路设计(最小系统)
- 随想录(功能安全和软件开发)
- linux驱动编写(触摸屏驱动)
- 随想录(windows和linux进行socket通信)