博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 101 The Blocks Problem 数据结构专题
阅读量:4074 次
发布时间:2019-05-25

本文共 1094 字,大约阅读时间需要 3 分钟。

FILE 67864
19.16%
14194
题目链接:

题目类型: 数据结构, 二叉树

题意: 

有N个位置, 编号为 0~N-1, 初始下,各个位置上放置这和位置编号相同的砖块,即砖块1,砖块2……砖块N-1。 然后有四种命令操作方式:

1.move a onto b :把砖a移动到砖b上面,如果a和b上面都有砖块,要先把它们放回原来位置。

2.move a over b: 把a移动到有b的“砖堆”上面,移动前需要把a上面的砖块都恢复到原位置,b的堆保持不变。

3.pile a onto b:把a之上的(包括a)搬到b之上,要先把b上面的砖放回到原来位置

4.pile a over b: 直接把a之上的(包括a)搬到b所在的“砖堆”上。

5.quit: 结束命令。

解体思路: 初刚看到时,想用stack模拟,但是这样操作会比较多,可能会TLE。 于是自己模拟写了类似栈的类,但是可以随机存储。 STL确实用起来比较方便,但是很不灵活。

#include
#include
#include
using namespace std;int n, block_a, block_b, pos_a, pos_b;string command1,command2;class Pile{public: Pile(){ index = 0; } void init_set(int a){ index=0; arr[index++] = a; } int top(){ return arr[index-1]; } void add(int a){ arr[index++] = a; } bool is_empty(){ if(index==0) return true; return false; } int find(int a){ for(int i=0; i
> command1 >> block_a >> command2 >> block_b){ if(command1=="quit") break; solve(); } output(); return 0;}
——      生命的意义,在于赋予它意义。 
                   原创 
 , By   D_Double

转载地址:http://vuzni.baihongyu.com/

你可能感兴趣的文章
一段摩斯密码里的爱情故事
查看>>
游戏测试的技术难点和测试技术
查看>>
线程简介
查看>>
线程挂起自己,让出CPU
查看>>
线程同步(C# 编程指南)
查看>>
创建高效的线程安全类的步骤
查看>>
Failed to load class "org.slf4j.impl.StaticLoggerB
查看>>
使用 Apache MINA 2 开发网络应用
查看>>
MANIFEST.MF文件的格式
查看>>
NIO入门-了解Buffer
查看>>
database如何管理超过4GB的文件
查看>>
[转载]java.util.concurrent.ConcurrentHashMap 如何在不损失线程安全的同时提供更高的并发性...
查看>>
sun game server (sgs)初探
查看>>
類別 ConcurrentHashMap<K,V>的更新,删除
查看>>
如何使用Flex 4新的CSS语法,兼容halo组件
查看>>
flex addChild 的一个小细节
查看>>
Future模式,探讨mina中的Iofuture
查看>>
Java动态数组
查看>>
人生时间表. 如果您有了时间
查看>>
Adobe Flash gets its full launch on Android
查看>>