紫书章五例二 木块问题 UVA 101(vector)
来源:互联网 发布:u盘启动ubuntu系统 编辑:程序博客网 时间:2024/06/07 02:50
这一道题主要是vector的应用。我们经常用的有 vector a
a.push_back() 尾查
a.pop_back() 尾删
a.size() a的长度
a.resize(h+1) a 只保留0-h 的元素
a.clear() 清空a
a.empty() 判断a是否为空
还可以直接赋值
题意为:
move a onto b 将木块a上的木块还原,b上的木块还原,a放到b上
move a over b 将木块a上的木块还原,将a放在b所在堆的最上面
pile a onto b b以上木块还原,将a以及a以上木块放到b上
pile a over b 将a以及a以上的木块放在b所在堆的最上面
quit 停止
然后如果ab在同一堆的话,则不操作
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <vector>using namespace std;int vis[30];int z[30];char s[10],s2[10];int n;vector <int > v[30];void init(){ for(int i=0;i<n;i++){ vis[i]=i; v[i].push_back(i); }}int main(){ // freopen("E:\\input.txt","r",stdin); scanf("%d",&n); init(); for(;;){ scanf("%s",s); if(s[0]=='q') break; int a,b; scanf("%d %s %d",&a,s2,&b); int k1=vis[a],k2=vis[b]; if(k1==k2) continue; if(s[0]=='m') { for(int i=v[k1].size()-1;i>=0;i--){//将a上的还原 int g=v[k1][i]; if(g==a) {v[k1].pop_back();break;} else { vis[g]=g; v[g].push_back(g); v[k1].pop_back(); } } if(s2[1]=='n'){ for(int i=v[k2].size()-1;i>=0;i--){//将b上的还原 int g=v[k2][i]; if(g==b) break; else { vis[g]=g; v[g].push_back(g); v[k2].pop_back(); } } } v[k2].push_back(a); vis[a]=k2; } else if(s[0]=='p'){ memset(z,0,sizeof(z)); int h=0; for(int i=v[k1].size()-1;i>=0;i--){//a上取出 int g=v[k1][i]; if(g==a){z[h++]=a;vis[a]=k2;v[k1].pop_back();break;}//这里不要忘记将a标记啊啊啊啊 else { z[h++]=g; vis[g]=k2; v[k1].pop_back(); } } if(s2[1]=='n'){ for(int i=v[k2].size()-1;i>=0;i--){//将b上还原 int g=v[k2][i]; if(g==b){break;} else { vis[g]=g; v[g].push_back(g); v[k2].pop_back(); } } } for(int i=h-1;i>=0;i--) v[k2].push_back(z[i]); } } for(int i=0;i<n;i++){ printf("%d:",i); for(int j=0;j<v[i].size();j++){ printf(" %d",v[i][j]); } printf("\n"); } return 0;}
0 0
- 紫书章五例二 木块问题 UVA 101(vector)
- 木块问题(vector)-UVa 101
- Uva 101(vector的使用)木块问题
- UVA(木块问题)101
- 101UVa木块问题
- Uva 101 the block problem 木块问题(算法竞赛经典入门)STL vector
- 木块问题 (using std::vector) UVA
- 例题:木块问题(UVa 101)
- uva 101 POJ 1208 The Blocks Problem 木块问题 vector模拟
- Uva 101:The Blocks Problem(木块问题)
- uva 101 木块问题 The Blocks Problem
- The Blocks Problem UVA 101 木块问题
- 木块问题(The Blocks Problem, UVa 101)
- uva 101木块游戏
- UVA 101 木块
- 例题 5-2 木块问题 (The Blocks Problem) UVa 101
- 例题5-2 UVA 101 The Blocks Problems 木块问题
- UVa OJ The Blocks Problem 木块问题 101
- (九)数据结构—栈
- 多态
- Android优雅之路——findViewBy Button
- 【深度学习】深度学习简介
- 自动装箱
- 紫书章五例二 木块问题 UVA 101(vector)
- LeetCode: 44. Wildcard Matching
- c++基础之继承
- Android 的ProgressDialog的dismiss()与cancel()方法的区别
- Java 创建文件输出流的时候报错
- 巧力避免ViewPager的预加载数据,Tablayout+Fragment+viewPager
- Android Studio安装插件
- Opendaylight Boron-SR2 安装
- 关于java.time