汉诺塔问题是最经典的递推问题之一:
有三个可以放圆盘柱子,编号为 A、B 和 C。
开始时柱子 A 上套着 n 个圆盘,它们从上到下按照从小到大的顺序排列。
我们的任务是要把这 n 个圆盘移到柱子 C 上,并保持它们的原有顺序不变。
在移动圆盘的过程中,需要遵守以下规则:
小杨在学习了汉诺塔问题后,决定添加一个新规则:
在新规则下,给定圆盘数量 n,试问最少移动步数是多少?
输入一个正整数 n,表示圆盘的数量。
输出一个整数,表示在新规则下将 n 个圆盘从 A 移动到 C 所需的最少移动步数。
2
7
3
21
以下步骤是最佳的(编号为 1 的是小盘,为 2 的是大盘):
可以证明没有更少步骤可以完成这个任务。
对于所有数据,n \le 20