#2722. 第一题:汉诺塔问题

第一题:汉诺塔问题

题目描述

给定三根柱子,初始状态下,最左边上有若干个圆盘,这些圆盘从上到下按从小 到大的顺序排列。任务是将这些圆盘全部移到中间杆上,且必须保持原有顺序不 变。在移动过程中,需要遵守以下规则:

1、 只能从一根柱子的顶部取出圆盘,并将其放入另一根柱子的顶部。

2、 每次只能移动一个圆盘。

3、 小圆盘必须始终在大圆盘之上。

这是一个著名的问题,几乎所有的教材上都有这个问题。由于条件是一次只能移 动一个盘,且不允许大盘放在小盘上面,所以 64 个盘的移动次数是: 18,446,744,073,709,551,615 这已经是一个天文数字,假定圆盘从小到大编 号为 1, 2, ...n(n<20),请你模拟下圆盘的移动过程。

输入格式

输入为一个整数(n<20)后面跟三个单字符字符串。

整数为盘子的数目,后三个字符表示三个杆子的编号。

输出格式

输出每一步移动盘子的记录。一次移动一行。

每次移动的记录为例如 a->3->c 的形式,即把编号为 3 的盘子从 a 杆移到 b 杆。

2 a b c
a->1->c 
a->2->b 
c->1->b

样例解释

image

以样例数据为例:三根杆从左到右依次为 a,b,c,目标是从 a 杆把盘子移到 b 杆, 移动过程中严格遵循题目上述 3 条移动规则,移动过程为:第一步将 1 号盘从 a 移到 c(a->1->c),第二步将 2 号盘从 a 移到 b(a->2->b),第三步将 1 号盘 从 c 移到 b(c->1->b),移动完毕。