//UVa101 - The Blocks Problem
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
using namespace std;const int maxn = 30;
int n;
vector<int>pile[maxn];//找木块a所在的pile和height,以引用的形式返回调用者
void find(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;
}//把p堆高度为h的木块上方的所有木块移回原位
void back(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);
}//把p堆高度为h及其上方的木块整体移动到p2的顶部
void doing(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);
}int main(){int a, b;cin >> n;string s1, s2;for(int i = 0; i < n; i++) pile[i].push_back(i);while(cin >> s1 && s1 != "quit"){cin >> a >> s2 >> b;int pa, pb, ha, hb; find(a, pa, ha);find(b, pb, hb);if(pa == pb) continue;if(s2 == "onto") back(pb, hb);if(s1 == "move") back(pa, ha);doing(pa, ha, pb);}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");}return 0;
}/*
10
move 9 onto 1
move 8 over 1
move 7 over 1
move 6 over 1
pile 8 over 6
pile 8 over 5
move 2 over 1
move 4 over 9
quit0: 0
1: 1 9 2 4
2:
3: 3
4:
5: 5 8 7 6
6:
7:
8:
9:
*/

UVa101 - The Blocks Problem相关推荐

  1. 算法竞赛入门经典(第二版) | 例题5-2 木块问题 (紫皮书牛啤!)(UVa101,The Blocks Problem)

    大意: 输入n,代表n个木块,输入最多n种操作类型,按类型对木块进行操作,读入quit结束 输入输出格式: 1.move a onto b:将a和b所在上方的方块先归位,再将a移到b所在柱子 2.mo ...

  2. 题解 The Blocks Problem(UVa101)紫书P110vector的应用

    紫书P110:vector的应用:UVa101 The Blocks Problem Vjudge题目地址请移步此处 题目大意: 输入n (0<n<25),得到编号为0到n-1的木块,分别 ...

  3. the blocks problem(uva 101 or poj 1208)

    题目描述见:uva 101 or poj 1208 关键在于彻底理解题目中搬积木的几个命令的含义,见具体分析 如果还不能理解题意,那么找一个正确通过的代码,编译并输入测试数据,查看其每一个命令的执行情 ...

  4. 《算法竞赛入门经典》 例题5-2 木块问题(The Blocks Problem,UVa 101)

    原题及翻译 Many areas of Computer Science use simple, abstract domains for both analytical and empirical ...

  5. UVA - 101:The Blocks Problem

    原本以为是一道很简单的模拟题,结果写了一个小时...很长时间不碰算法题,的确手感差很多.不过我觉得随着刷题慢慢多起来应该会好的. 题目的意思也有点含糊,需要自己去猜,大概意思就是槽里有一堆木头,每个槽 ...

  6. uva 101 The Blocks Problem

    1.     move a onto b在將a搬到b上之前,先將a和b上的積木放回原來的位置(例如:1就放回1的最開始位罝) 2. move a over b在將a搬到b所在的那堆積木之上之前,先將a ...

  7. Uva 101:木块问题 The Blocks Problem(详细说明)+(难点)

    算法竞赛入门经典 开始接触ACM,老师推荐了紫皮书,但是C++渣渣的我读题都很费劲,搜罗博主文章发现几乎都是 原题+代码 .现尽己所能整理,比较啰(xiang)嗦(xi),希望能对同起步小白有所帮助, ...

  8. 很有趣的STL初学资料

    1.泛型程序设计简介与迭代器的介绍 2.常见的STL容器及其例题应用(UVA10474,UVA101,UVA10815,UVA156,UVA540,UVA136 HDU1027,CF501B,HDU1 ...

  9. 《算法竞赛入门经典(第2版)》——学习记录

    前言:   这里主要记录本人在学习紫书过程中充分理解过的题目的AC代码,便于以后回顾时查找代码和思路,毕竟看别人的真的有点难懂.此外,本书甚至是本书之外的相关知识学习也可能在此留下记录.   作为一只 ...

最新文章

  1. 基于CAP:深入剖析分布式一致性机制
  2. DTP模型之二:(XA协议之二)jotm分布式事务实现
  3. Spark机器学习9· 实时机器学习(scala with sbt)
  4. SSH免密码登录设置
  5. HashMap的存储过程
  6. ST发布世界上首款LoRa Soc单片机STM32WL
  7. pyqt5与html数据交互原理,pyqt5与本地html进行js交互
  8. 35 MM配置-采购-采购订单-设置价格差异的容差限制
  9. Spring Boot集成Swagger
  10. 《虚拟化与云计算》读书感(九)服务器虚拟化的其他核心技术
  11. spark学习-SparkSQL-java版JavaRDD与JavaPairRDD的互相转换
  12. Sklearn——用Sklearn实现线性回归(LinearRegression)
  13. java layer调用native层的android_media_AudioTrack_get_min_buff_size()确定audio track buffer的min size...
  14. [曲线拟合]使用Tensorflow拟合COS函数
  15. 微信小程序发布上线全流程(注册/开发/上传审核)
  16. 2019年8月8日 星期四 今日计划
  17. 图像分割-专有名词讲解
  18. Python自动化之-DDT数据驱动
  19. bcd 初始化库系统卷失败_中级|软考题库每日一练|2.24
  20. 蓝色基因超级计算机top500,美国力推Graph500超级计算机排名欲取代Top500

热门文章

  1. 深入理解 MapReduce
  2. python开发软件的实例-Python 开发工具和框架安装实例步骤
  3. python画三维图-Python 绘制酷炫的三维图步骤详解
  4. python有道-Python调用有道词典翻译
  5. python小白从哪来开始-Python爬虫小白入门(一)写在前面
  6. python与java前景-Python与Java相比,其优势在哪?
  7. python最适合做什么-python适合做什么开发?
  8. python一对一视频教学-问Python,一对一直播开发需要推流器吗?
  9. python是什么类型的语言-编程语言分类及python所属类型
  10. watson语音识别下载