编程题
汉诺塔 ### 题目描述 汉诺塔是一个古老的数学问题:   有三根杆子 $A$,$B$,$C$。$A$ 杆上有 $N$ 个 $(N>1)$ 穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至 $C$ 杆: + 每次只能移动一个圆盘 + 大盘不能叠在小盘上面 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。问:如何移?最少要移动多少次? ### 输入描述 一行,包含 $2$ 个正整数,一个是 $N$,表示要移动的盘子数;一个是 $M$,表示最少移动步数的第 $M$ 步。 ### 输出描述 共 $2$ 行。 第一行输出格式为:`#No: a->b`,表示第 $M$ 步骤具体移动方法,其中 $No$ 表示第 $M$ 步移动的盘子的编号($N$个盘子从上到下依次编号为 $1$ 到 $n$),表示第$M$步是将 $No$ 号盘子从 $a$ 杆移动到 $b$ 杆($a$和 $b$ 的取值均为 {$A$、$B$、$C$})。 第 $2$ 行输出一个整数,表示最少移动步数。 ### 输入输出样例 #### 示例 1 >输入 ```txt 3 2 ``` >输出 ```txt #2: A->B 7 ```
查看答案
赣ICP备20007335号-2