题目链接:Problem B

题意:有n块木块,编号为0~n-1,要求模拟以下4种操作(下面的a和b都是木块编号)

1. move a onto b: 把a和b上方的木块全部归位,然后把a摞在b上面。

2. move a over b: 把a上方的木块全部归位,然后把a放在b所在木块堆的顶部。

3. pile a onto b: 把b上方的木块全部归位,然后把a及上面的木块整体摞在b上面。

4. pile a over b: 把a及上面的木块整体摞在b所在木块堆的顶部。

遇到quit时终止一组数据,忽略非法指令。

思路:每个木块堆都用一个vector来维护,move操作都要对a归位,onto操作都要对b归位可以一起处理,四种操作最后都是把a及以上的摞在b的顶上,只不过前两种a上面的为空。

note:
、resize(n)
调整容器的长度大小,使其能容纳n个元素。
如果n小于容器的当前的size,则删除多出来的元素。
否则,添加采用值初始化的元素。
、 resize(n, t)
多一个参数t,将所有新添加的元素初始化为t。

code:

 #include <iostream>
#include <string>
#include <vector>
using namespace std;
const int MAXN = ;
vector<int> pile[MAXN];
int n; void findBlock(int a, int& p, int& h)
{
for (p = ; p < n; ++p)
{
for (h = ; h < pile[p].size(); ++h)
{
if (pile[p][h] == a)
return;
}
}
} void clearAbove(int p, int h)
{
for (int i = h + ; i < pile[p].size(); ++i)
{
int b = pile[p][i];
pile[b].push_back(b);
}
pile[p].resize(h + );
} void pileOnto(int pa, int ha, int pb)
{
for (int i = ha; i < pile[pa].size(); ++i)
pile[pb].push_back(pile[pa][i]);
pile[pa].resize(ha);
} int main()
{
cin >> n;
for (int i = ; i < n; ++i) pile[i].push_back(i);
int a, b;
string s1, s2;
while (cin >> s1)
{
if (s1 == "quit") break;
cin >> a >> s2 >> b;
int pa, pb, ha, hb;
findBlock(a, pa, ha);
findBlock(b, pb, hb);
if (pa == pb) continue;
if ("move" == s1) clearAbove(pa, ha);
if ("onto" == s2) clearAbove(pb, hb);
pileOnto(pa, ha, pb);
}
for (int i = ; i < n; ++i)
{
cout << i << ":";
for (int j = ; j < pile[i].size(); ++j)
cout << " " << pile[i][j];
cout << endl;
}
return ;
}

Problem B The Blocks Problem(vector的使用)的更多相关文章

  1. UVa 101 - The Blocks Problem(积木问题,指令操作)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  2. UVa 101 The Blocks Problem Vector基本操作

    UVa 101 The Blocks Problem 一道纯模拟题 The Problem The problem is to parse a series of commands that inst ...

  3. The Blocks Problem(vector)

    题目链接:http://poj.org/problem?id=1208 The Blocks Problem Time Limit: 1000MS   Memory Limit: 10000K Tot ...

  4. 【UVA - 101】The Blocks Problem(vector+模拟)

    The Blocks Problem Descriptions:(英语就不说了,直接上翻译吧) 初始时从左到右有n个木块,编号为0~n-1,要求实现下列四种操作: move a onto b: 把a和 ...

  5. UVa101 The Blocks Problem(不定长数组vector)

    The Blocks Problem 书上的一道例题,代码思路比较清晰,可以看懂. 相关知识: 若a是一个vector,则: a.size():读取它的大小 a.resize():改变大小 a.pus ...

  6. POJ 1208 The Blocks Problem

    The Blocks Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5397   Accepted: 231 ...

  7. 木块问题(The Blocks Problem,Uva 101)

    不定长数组:vector vector就是一个不定长数组.不仅如此,它把一些常用操作“封装”在了vector类型内部. 例如,若a是一个vector,可以用a.size( )读取它的大小,a.resi ...

  8. Problem : 1002 ( A + B Problem II )

    经验总结:一定要注意输出的格式,字符的空格,空行,一定要观察清楚.如本题的最后一个输出结果后面没有空行.最后代码实现的时候需要判断一下,代码如下 !=n) cout<<endl; Prob ...

  9. 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem B. Travelling Camera Problem set贪心

    Problem B. Travelling Camera Problem 题目连接: http://www.codeforces.com/gym/100253 Description Programm ...

随机推荐

  1. docker 容器开启ssh服务

    ssh服务安装 安装ssh服务 #yum install openssh-server -y 安装passwd(修改密码需要) #yum install passwd -y 修改sshd_config ...

  2. Android软件版本更新

     转的:适合新手学习,但在实际项目中不可这么做. 以下是我转的内容: ================================================================= ...

  3. [LeetCode][Python]Tow Sum

    # -*- coding: utf8 -*-'''https://oj.leetcode.com/problems/two-sum/ Given an array of integers, find ...

  4. HTML加载顺序总结测试

    首先,页面加载顺序:解析HTML结构.加载外部脚本和样式表文件.解析并执行脚本代码.构造HTML DOM模型.加载图片等外部文件.页面加载完毕. 也就是:html → head → title → # ...

  5. 如何制作一个类似Tiny Wings的游戏(2) Cocos2d-x 2.1.4

    在第二篇<如何制作一个类似Tiny Wings的游戏>基础上,增加添加主角,并且使用Box2D来模拟主角移动,原文<How To Create A Game Like Tiny Wi ...

  6. [有用命令]Linux 用户,用户组

    更改文件拥有者 -R 是递归的意思 chown [ -R ] root.work test 将test 文件 改为 拥有者 root , 用户组 work. chown [ -R ] work tes ...

  7. xcode - 触摸移动

    第一步 创建一个UIView类  命名MoveView #import "MoveView.h" @implementation MoveView /** 移动事件 */ -(vo ...

  8. HTML之学习笔记(九)表单

    html的表单标签是一个系列,用开闭的<form>标签包裹起来的组合.表单的作用是将我们要向服务器提交数据的数据包含起来,然后提交到服务器处理.(使用表单是浏览器提交客户端数据到服务端的方 ...

  9. 由RGB到HSV颜色空间的理解

    1. RGB模型 2. HSV模型 3. 如何理解RGB与HSV的联系 4. HSV在图像处理中的应用 5. opencv中RGB-->HSV实现 在图像处理中,最常用的颜色空间是RGB模型,常 ...

  10. Excel文件转换为html静态网页

    Excel文件转换为html静态网页:右键另存为: