UVa 120 - Stacks of Flapjacks
来源:互联网 发布:all先导爱知 编辑:程序博客网 时间:2024/05/04 15:45
题意:给一摞随意摞的煎饼,要按直径从上到下递增的顺序排列,求翻的顺序。
思路:贪心。
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;}
0 0
- UVA 120 Stacks of Flapjacks
- UVa 120 - Stacks of Flapjacks
- uva 120 Stacks of Flapjacks
- UVA 120 - Stacks of Flapjacks
- uva 120 - Stacks of Flapjacks
- UVa 120 - Stacks of Flapjacks
- UVA 120 - Stacks of Flapjacks
- UVa 120 - Stacks of Flapjacks
- UVA 120Stacks of Flapjacks
- UVA 120 - Stacks of Flapjacks
- uva 120 Stacks of Flapjacks
- UVA 120 Stacks of Flapjacks
- uva 120 Stacks of Flapjacks
- uva - 120 - Stacks of Flapjacks
- UVa 120 - Stacks of Flapjacks
- UVA - 120 - Stacks of Flapjacks
- UVa:120 - Stacks of Flapjacks
- UVa 120 - Stacks of Flapjacks
- UVA 10954 - Add All
- UVa 10020 - Minimal coverage
- UVA 10602 - Editor Nottoobad
- UVa 10026 - Shoemaker's Problem
- iOS圆角
- UVa 120 - Stacks of Flapjacks
- 数组中求第K大数
- UVa 11369 - Shopaholic
- UVa 10714 - Ants
- UVa 10148 - Advertisement
- Android 打造万能的ViewPagerIndicator 指示器
- 移动支付的坑。微信支付-设置超时-添加time_exprie参数后-无法启动,阿里支付超时设置it_b_pay无效,
- [iOS开发]快速开发一:Xcode7如何添加pch文件
- JAVA实验二类的创建及封装