UVA 120 - Stacks of Flapjacks(构造)
2016-08-05 15:22
381 查看
题意:从上到下给你N个煎饼,每个煎饼有一个数值,每次选择一个数字k,你可以把从锅底从上数第k张以上的煎饼全部翻过来,让你找到一个k的序列,使得最后的饼从上到下按顺序放好。
解法:每次只需要将当前最大的饼找到,放到最下面即可。
解法:每次只需要将当前最大的饼找到,放到最下面即可。
#include <bits/stdc++.h> #define _ ios_base::sync_with_stdio(0);cin.tie(0); #define INF 0x3f3f3f3f #define eps 1e-6 typedef long long LL; const double pi = acos(-1.0); const long long mod = 1e9 + 9; using namespace std; int a[105]; int N; void rev(int cut) { printf("%d ",N - cut); for(int i = 0;i <= cut / 2;i++) swap(a[i],a[cut - i]); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); //freopen("int.txt","r",stdin); //freopen("out.txt","w",stdout); while(scanf("%d",&a[0]) != EOF) { N = 1; while(1) { if(getchar() != ' ') break; scanf("%d",&a[N++]); } for(int i = 0;i < N - 1;i++) printf("%d ",a[i]); printf("%d\n",a[N - 1]); //printf("N = %d\n",N); int cnt = N; while(cnt) { int Max = 0, rec; for(int i = 0;i < cnt;i++) if(a[i] > Max){ Max = a[i]; rec = i; } if(rec != cnt - 1) { if(rec != 0) rev(rec); rev(cnt - 1); } cnt--; } printf("0\n"); } return 0; }
相关文章推荐
- winform中嵌入Ppt、Word、Excel
- Android控件EditText中文本光标位置的设置
- solr5.X的几个重要配置模板
- pwd 获取用户信息, grp 获取组的信息
- 一直显示loading archetype list以及加载archetype.xml很慢的解决办法
- 【SQL】—Oracle之row_number()与rownum效率大比拼
- Codeforces 414B 统计dp
- Django 模板里赋值
- HTML页面乱码及解决方式
- 登陆页面实现保存帐号密码功能
- codevs 1269 匈牙利游戏
- 在Ubuntu14.04上快速部署OpenStack
- 空格串替换为最少数量的制表符和空格
- ubuntu Linux 测试PHP却提示下载文件的解决办法
- tfs2015 生成与发布 配置
- Android和PHP开发最佳实践
- Collection总结一览
- Python 正则表达式(3)匹配手机号
- linux进程通信之pipe
- UIImageView 的contentMode属性