[uva101]木块问题

Grade Open Time Friday, 19 September 2014, 10:08 am
Discount 0.8 Time Discount Friday, 26 September 2014, 10:08 am
Allow late Yes Close Time Friday, 26 September 2014, 10:08 am
Input file uvablock.in Output file uvablock.out

【题目描述】

    在计算机科学的很多领域,人们都是用简单,抽象的“区域问题”来进行分析和实践研究。例如:初期的机器人人工智能的研究就从解决方块问题开始的。机器人使用手臂完成有关于方块的操作任务。

    在此问题中。你需要构造一个受特定条件限制的简单的方块模型。编写程序让机器人手臂完成一下任务:

    分析一下命令,让机器人手臂移动置于平摊桌子上的方块。桌子上有n个方块(记为0到n-1).其中方块b(i)和方块b(i+1)(0<=i<n-1)相邻。图表如下:


及其需要完成的有效命令:

●move a onto b:

a,b分别是方块编号,移动方块a,b上的任何方块,将a置于b上。

●move a over b:

a,b分别是方块编号,移动位于a上的任何方块,将a 置于b摞顶部。

●pile a onto b:

a,b分别是方块编号,移动a摞(包括a上的任何方块)置于b方块上。移动时保持a上的所有方块顺序不变,且先移动b方块上的所有方块。

●pile a over b:

a,b 分别是方块编号,将a 摞(包括a上的任何方块)置于b摞顶部。移动a时需保持a方块上的所有方块顺序不变。

●quit

(注:任何包含a=b或将a,b置于同一摞的命令属于错误命令。错误命令将视为无效命令。)



【输入格式】


输入信息中以整数n开始(n代表方块的数量),0<n<25

一系列命令应在方块的数量之后,每行一个命令。程序运行到退出终止。

所有命令必须遵循以上格式。任何语法错误将视为错误命令。


【输出格式】


输出信息应显示出方块的最后状态。

每一个表示方块位置的I(0<=I<n)后都必须使用一个分号。如果方块的数量多于1,分号后需使用一个空格。列举此方块摞中各个方块时,各方块之间需以空格隔开。每行信息中不允许出现多余的空格。

每个位置的方块用一行输出信息。(例如在输入信息中第一行输入n,则有n行输出信息)


【样例输入】

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 quit

【样例输出】

0: 0 1: 1 9 2 4 2: 3: 3 4: 5: 5 8 7 6 6: 7: 8: 9:

【提示】

在此键入。

【来源】

uva101