木块问题(UVa101)
2024-08-25 04:58:26
题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=37
将操作分解为基本步骤,编写函数,重复调用
C++11代码如下:
#include<iostream>
#include<vector>
#include<string>
using namespace std; const int maxn =;
vector<int> pile[maxn];
int n;
void find_block(int a, int& p, int& h) { //找到木块所在的位置和高度(从0开始)
for (p = ; p < n; p++) {
for (h = ; h < pile[p].size(); h++) {
if (pile[p][h] == a) return;
}
}
} void clear_above(int p, int h) { //将p位置高度h以上的木块移回原位
for (int i = h + ; i < pile[p].size(); i++) {
int b = pile[p][i];
pile[b].push_back(b);
}
pile[p].resize(h + ); //保留 0-h高度的木块
} void pile_onto(int p, int p2,int h) { //将p位置处从h高度的木块全部移动到p2顶部
for (int i = h; i < pile[p].size(); i++) {
pile[p2].push_back(pile[p][i]);
}
pile[p].resize(h); //保留高度0~h-1的木块
} void print() { //输出全部操作介绍后各个位置木块的信息
for (int i = ; i < n; i++) {
cout << i << ':';
for (int j = ; j < pile[i].size(); j++)
cout << ' ' << pile[i][j];
cout << endl;
}
} int main() {
int ha, pa, hb, pb;
cin >> n;
for (int i = ; i < n; i++) pile[i].push_back(i);
string s1, s2;
int a, b;
while (cin >> s1 >> a >> s2 >> b) {
find_block(a, pa, ha);
find_block(b, pb, hb);
if (pa == pb) continue;
if (s1 == "move") clear_above(pa, ha);
if (s2 == "onto") clear_above(pb, hb);
pile_onto(pa, pb, ha);
}
print();
return ;
}
最新文章
- python通过protobuf实现rpc
- 【IIS】IIS6.1配置 *.config 文件 的MIME类型用于升级程序
- BZOJ1017: [JSOI2008]魔兽地图DotR
- Mac常用命令
- Missing number
- 获取当前html标签自定义属性的值
- nodejs+express中设置登录拦截器
- 实现listview的条目点击后改变背景颜色
- Android开发_控制硬加速hardwareAccelerated
- 采用objdump调试驱动程序
- 2016 SyScan360 国际前瞻信息安全会议 多角度探讨信息安全
- 带你重拾JavaScript(2)之console的你所不知道的功能
- centos环境的python、scrapy部署
- <;数据结构基础学习>;(三)Part 1 栈
- 痞子衡嵌入式:SEGGER J-Link仿真器硬件版本变迁
- 转://Window下安装Oracle ASM单实例数据库
- 2018牛客网暑期ACM多校训练营(第三场)C Shuffle Cards(可持久化平衡树/splay)
- XXS level8
- 基于SQL和PYTHON的数据库数据查询select语句
- springboot-6-整合jdbc
热门文章
- maven 启动 tomcat 及 跳过 test 安装
- Kubernetes 1.5通过Ceph实现有状态容器
- 第2章-Vue.js指令
- &#39;0&#39;,&#39;\0&#39;,NULL,EOF的区别
- js-之闭包的理解
- jdbc:oracle:thin:@localhost:1521:orcl和jdbc:oracle:thin:@localhost:1521/orcl的区别
- jq消除网页滚动条
- NYOJ 1012 RMQ with Shifts (线段树)
- 使用SPLUNK进行简单Threat Hunting
- 2. 数据库文件配置与简单操作 Model / M()