Uva101—— The Blocks Problem
2015-10-24 20:33
405 查看
#include <string> #include <cstdio> #include <vector> #include <iostream> using namespace std; const int maxn = 30; int n; vector<int> pile[maxn]; void find_block(int a, int &p, int &h) { for(p = 0; p < n; p++) for(h = 0; h < pile[p].size(); h++) if(pile[p][h] == a) return; } void clear_block(int p, int h) { for(int i = h + 1; i < pile[p].size(); i++) { int b = pile[p][i]; pile[b].push_back(b); } pile[p].resize(h + 1); } void pile_onto(int p, int h, int p2) { for(int i = h; i < pile[p].size(); i++) pile[p2].push_back(pile[p][i]); 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() { // freopen("101.txt", "r", stdin); int a, b; cin >> n; string s1, s2; for(int i = 0; i < n; i++) { pile[i].clear(); pile[i].push_back(i); } while(cin >> s1) { if(s1 == "quit") break; cin >> a >> s2 >> b; // cout << s1 << a << s2 << b << endl; int pa, pb, ha, hb; find_block(a, pa, ha); find_block(b, pb, hb); if(pa == pb) continue; if(s2 == "onto") clear_block(pb, hb); if(s1 == "move") clear_block(pa, ha); pile_onto(pa, ha, pb); } print(); return 0; }
相关文章推荐
- 黑马程序员——Java中的网络编程
- 博客地址
- PageRank算法 python单机实现
- Android自定义View之TitleBar,通用标题栏
- 微软2016校园招聘9月在线笔试C.Fibonacci
- Uva10815——Andy's First Dictionary
- BCGcontrolBar(八) Ribbon图标变换
- C语言 概念整理 第一章 我梦老师倾情奉献
- window.location js截取url地址
- 《rsync同步的艺术》–linux命令五分钟系列之四十二
- asp中把数据导出为excel的几种方法
- UitableView的增删和移动
- nmap的使用2
- Android Studio加入百度地图功能
- 1051: [HAOI2006]受欢迎的牛
- linux系统下的qt5安装
- Uva156——Ananagrams
- MYSQL数据库
- C++ 多态的实现机制
- JQuery01