POJ 1208 The Blocks Problem
2016-05-20 21:18
344 查看
#include<iostream> #include<cstdio> #include<vector> #include<string> using namespace std; const int maxn=30; int n; vector<int> pile[maxn]; void find(int a,int &p,int &h) { for(p=0;p<n;p++) for(h=0;h<pile[p].size();h++) if(a==pile[p][h]) return ; } void clear_above(int p,int h) { for(int j=h+1;j<pile[p].size();j++) { int b=pile[p][j]; pile[b].push_back(b); } pile[p].resize(h+1); } void pile_onto(int p,int h,int p2) { for(int j=h;j<pile[p].size();j++) pile[p2].push_back(pile[p][j]); pile[p].resize(h); } void print() { for(int i=0;i<n;i++) { printf("%d:",i); for(int j=0;j<pile[i].size();j++) printf("% d",pile[i][j]); printf("\n"); } } int main() { int a,b; string s1,s2; scanf("%d",&n); for(int i=0;i<n;i++) pile[i].push_back(i); while(1) { cin>>s1; if(s1=="quit") break; cin>>a>>s2>>b; int pa, pb, ha, hb; find(a, pa, ha); find(b, pb, hb); if(pa == pb) continue; if(s2=="onto") clear_above(pb,hb); if(s1=="move") clear_above(pa,ha); pile_onto(pa,ha,pb); } print(); return 0; }
相关文章推荐
- 20非常有用的Java程序片段
- ORA-22992:无法使用从远处表选择LOB定位器
- 存储过程
- UVA 11270 轮廓线
- POJ 1987 Distance Statistics 树的分治
- Mysql 总结(一)
- JDK里的设计模式
- DRBD+Heartbeat+NFS高可用实战 推荐
- 1002
- 内部类
- mavlink的Java语言之探索实现
- HDOJ 3415 Max Sum of Max-K-sub-sequence(线段树优化DP)
- 求数组中有多少个已知元素并输出
- FleaPHP的单入口文件详解
- String和StringBuffer
- 数据库--Orcal--day04
- PHP之路——MySql查询语句
- [BZOJ1036][JZOJ2256]【ZJOI2008】树的统计(树链剖分模板)
- Shell脚本学习之sed详解
- C++虚函数