The Block Problem, id:101
来源:互联网 发布:miyavi知乎 编辑:程序博客网 时间:2024/04/30 06:00
分析:
可以用C++的STL中的vector来表示每个木块堆。然后用一个数组来存储vector。具体代码如下:
#include <iostream>#include <cstdio>#include <vector>#include <string>using namespace std;vector<int> block_vec[25];int block_find(int a, int & h, int n) { int pile ; for(pile = 0; pile < n; pile++) for(h = 0; h < block_vec[pile].size(); h++) if(block_vec[pile][h] == a) return pile;}void clear_h(int a_vec, int ha) { for(int i = ha + 1; i < block_vec[a_vec].size(); i++) { int x = block_vec[a_vec][i]; block_vec[x].push_back(x); } block_vec[a_vec].resize(ha + 1);}void move_block_vec(int va, int vb, int ha) { for(int i = ha; i < block_vec[va].size(); i++) { int x = block_vec[va][i]; block_vec[vb].push_back(x); } block_vec[va].resize(ha);}int main(){ string cmd1, cmd2; int n, a, b; scanf("%d", &n); for(int i = 0; i < n; i++) block_vec[i].push_back(i); while(cin >> cmd1 >> a >> cmd2 >> b ) { int a_vec, b_vec, ha, hb; a_vec = block_find(a, ha, n); b_vec = block_find(b, hb, n); if(a_vec == b_vec) continue; if(cmd1 == "move") clear_h(a_vec, ha); if(cmd2 == "onto") clear_h(b_vec, hb); if(cmd1 == "quit") break; move_block_vec(a_vec, b_vec, ha); } for(int i = 0; i < n; i++) { printf("%d:", i); for(int j = 0; j < block_vec[i].size(); j++) printf(" %d", block_vec[i][j]); printf("\n"); } return 0;}
运行结果如下:
0 0
- The Block Problem, id:101
- UVa-The Block Problem(101)
- Uva 101 the block problem 木块问题(算法竞赛经典入门)STL vector
- http://poj.org/problem?id=1274&&The Perfect Stall
- Find The Multiple&&http://poj.org/problem?id=1426
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101 - The Blocks Problem
- 101The Blocks Problem
- 101 - The Blocks Problem
- flex4拾遗一: transition
- dockerfile 安装 nginx
- Nodepad++ 通过正则表达式批量替换文本内容
- 缓存溢出
- centos7 安装mariadb
- The Block Problem, id:101
- 网易2016年Java工程师实习编程题目
- Android 通知 Notification 使用详情
- hdu5025Saving Tang Monk【广搜】
- 第三章信息编码与数据表示(一)
- 自动生成android dimens.xml适配屏幕
- struts2查看源码
- git 彻底返回上一次提交前的版本
- hrbust 1424 哈理工oj 1424 Hrbust的校车【水题】【思维】