题意:给一摞随意摞的煎饼,要按直径从上到下递增的顺序排列,求翻的顺序。

思路:贪心。

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相关推荐

  1. uva 120——Stacks of Flapjacks

    题意:一个非常有趣的问题,就是给一摞煎饼,然后从下面拿起来一张,然后把该张上面的所有馅饼反转,求最后使得馅饼从小到大的最小的步数. 思路:贪心.每次都把没排好序的最大数反转到最上面,然后在一次反转到最 ...

  2. Stacks of Flapjacks UVA 薄饼排序问题

    // 有点类似栈和队列的操作,但在这里可以用纯数组模拟出来.#include <iostream>#include <cstring>#include <cstdio&g ...

  3. π-Algorithmist分类题目(3)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...

  4. π-Algorithmist分类题目(1)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(1) Sorting UVAL ...

  5. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  6. sicily题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  7. [sicily]部分题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  8. Sicily 题目分类

    依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...

  9. 编程题目分类(剪辑)

    1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...

最新文章

  1. 大数据环境下该如何优雅地设计数据分层
  2. Java 二次MD5 32位小写加密算法与php页面加密结果相同
  3. 设计模式: 自己手动实现一个观察者设计模式
  4. 理解SQLNET.AUTHENTICATION_SERVICES参数|转|
  5. 找到比某个数大的最小的2的次幂
  6. 11、1.4.3 测试JDK安装成功
  7. Java7任务并行执行神器:ForkJoin框架
  8. BZOJ 1012 单调队列+二分
  9. android /data/data/数据作用,android 清除data/data/ 下其他应用的数据
  10. IntelliJ Idea学习笔记008---Idea左侧栏不显示目录结构_或者只显示一个Project不显示其他东西
  11. 要是面试官再问我synchronized,我就这么答
  12. 引用 八卦象数疗法--配方1
  13. 纠错式教学法对比鼓励式教学法 -----Lily、贝乐、英孚,乐加乐、剑桥国际、优学汇、北外青少...
  14. 电脑清理(C盘清理,卸载软件以及注册表清理)
  15. gitbook安装中installing gitbook xxx 时间过长的问题
  16. git修改commit的用户名与邮箱
  17. C# 如何减少装箱拆箱
  18. 2022考研笔记-政治(马原-马克思主义哲学)
  19. 【NOIP2017提高组】轰炸
  20. 数学建模-马尔萨斯人口问题

热门文章

  1. ASP.NET 常用的33种代码(转,收藏一下,以备后查)
  2. ES6新特性_变量的解构赋值---JavaScript_ECMAScript_ES6-ES11新特性工作笔记006
  3. RabbitMq学习笔记001---RabbitMq在Windows下安装配置
  4. EJB3.0学习笔记---定义客户端访问接口:
  5. Leetcode529. 扫雷游戏
  6. java有没有自定义好的按钮_java – 带有nimbus的自定义JButton
  7. 嵌入式电路设计(最小系统)
  8. 随想录(功能安全和软件开发)
  9. linux驱动编写(触摸屏驱动)
  10. 随想录(windows和linux进行socket通信)