紫书章五例二 木块问题 UVA 101(vector)
2017-04-02 15:32
417 查看
这一道题主要是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在同一堆的话,则不操作
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[k 4000 1].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; }
相关文章推荐
- 紫书章五例二 木块问题 UVA 101(vector)
- 紫书章五例二 木块问题 UVA 101(vector)
- 紫书章五例二 木块问题 UVA 101(vector)
- 紫书章五例二 木块问题 UVA 101(vector)
- 紫书章五例二 木块问题 UVA 101(vector)
- 紫书章五例二 木块问题 UVA 101(vector)
- 紫书章五例二 木块问题 UVA 101(vector)
- 木块问题(vector)-UVa 101
- Uva 101(vector的使用)木块问题
- uva 101 POJ 1208 The Blocks Problem 木块问题 vector模拟
- C++ 不定长数组vector 例5-2木块问题(The Blocks Problem,UVa 101)
- 5_2 木块问题(UVa101)<vector的使用>
- 木块问题 (using std::vector) UVA - 101
- uva 101 POJ 1208 The Blocks Problem 木块问题 vector模拟
- Uva - 101 木块问题(详解) - vector
- UVA(木块问题)101
- 例题 5-2 木块问题 (The Blocks Problem) UVa 101
- uva 101 木块问题 The Blocks Problem
- 例题:木块问题(UVa 101)
- Uva 101 the block problem 木块问题(算法竞赛经典入门)STL vector