UVA-120- Stacks of Flapjacks
来源:互联网 发布:phpcms域名绑定目录 编辑:程序博客网 时间:2024/06/06 01:43
这是一道一开始就没做出来的题,到现在了,结合LRJ的思路,做出来了,但是代码写的还是不易懂,思路乱,我太菜了。
其实发现规律就两步:1.找出指针前面的最大值及其位置, 2.把刀放在最大值后面并进行颠倒操作(如果最大值位于首部则不颠倒) 3.把刀放在指针处进行颠倒操作
每一步都要检查是否完成,及时推出。
#include<stdio.h>#include<iostream>#include<string>#include<sstream>#include<string.h>using namespace std;int bing[35],temp[35];int main(){ string str; while(getline(cin,str)) { stringstream ss(str); int num = 0; while(ss>>bing[num++]) //一共num个数,下标从0到num - 1 { if(num == 1) printf("%d",bing[num - 1]); else printf(" %d",bing[num - 1]); } printf("\n"); num--; for(int i = 0,j = num - 1;i < num;i++,j--) //旋转数字 temp[i] = bing[j]; for(int i = 0;i < num;i++) bing[i] = temp[i]; int zhizhen = 0,kase = 0; //zhizhen是没有被冻结的数字下标 while(1) { int flag = 1; for(int i = 1;i < num;i++) if(bing[i] > bing[i - 1]) {flag = 0;break;} if(flag) break; int maxn = bing[zhizhen],maxnxia = zhizhen; for(int i = zhizhen;i < num;i++) //找出最大值 if(bing[i] > maxn) {maxn = bing[i];maxnxia = i;} if(maxnxia != num - 1) //开始第一次颠倒! { memset(temp,0,sizeof(temp)); if(!kase) {printf("%d",maxnxia + 1);kase++;} else printf(" %d",maxnxia + 1); for(int i = maxnxia,j = num - 1;i < num;i++,j--) temp[j] = bing[i]; for(int i = maxnxia;i < num;i++) bing[i] = temp[i]; memset(temp,0,sizeof(temp)); flag = 1; for(int i = 1;i < num;i++) if(bing[i] > bing[i - 1]) {flag = 0;break;} if(flag) break; } if(!kase) {printf("%d",zhizhen + 1);kase++;} else printf(" %d",zhizhen + 1); for(int i = zhizhen,j = num - 1;i < num;i++,j--) temp[j] = bing[i]; for(int i = zhizhen;i <num;i++) bing[i] = temp[i]; flag = 1; for(int i = 1;i < num;i++) if(bing[i] > bing[i - 1]) {flag = 0;break;} if(flag) break; zhizhen++; } if(kase) printf(" 0\n"); else printf("0\n"); } 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
- 性能测试工具大全
- hdu-oj 1076 An Easy Task
- dbgrideh 一个单元格内怎么换行显示
- 设置MyEclipse中.jsp .xml样式
- mount -t vboxsf Desktop /home/h/Desktop/windesktop 写到/etc/rc.d/rc.local里.
- UVA-120- Stacks of Flapjacks
- SGU194 Reactor Cooling 有下界最大流
- 黑马程序员 - 学习笔记8 接口的初步了解
- 学习笔记 Java_毕向东_创建线程_同步代码块synchronized 2014.8.6
- 深入理解Linux进程间通信(IPC)-- FIFO
- lda(linear discriminant analysis)线性判别分析算法代码
- 数据挖掘算法源代码:很好的参考资料
- 神交流:纯表情社交应用,能摆到桌面?
- HDU 4907 Task schedule(BestCoder Round #3 )