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