1 条题解
-
0
经典汉诺塔问题,有 A,B,C 三根柱子,开始时 A 柱有 n 个圆盘,圆盘大的必须放在下面(移动过程中也一样),每一步移动能且只能移动一个圆盘,求把所有圆盘移到 C 处最少步数。 公式推导:
- 当只有一个圆盘时,显然直接将圆盘移到 C 处,此时得到 T(1)=1 。
- 我们考虑 n=k 是已经得到 T(k),则当 n=k+1 时,我们要让大盘移到 C 处,必须先用 T(k) 步把 k 个小盘移到 B 处(这样才能让大盘的移动没有多余步骤),然后还要再用 T(n) 步将 k 个小盘移到 C 处,得到 T(k+1)=T(k)×2+1。
- T(k+1)+1=2×(T(k)+1) 可以得到 {T(n)+1} 为公比为 2 的等比数列。
- 最终求得的公式就是广为人知的 T(n)=2n−1。
这道题由于 n 比较大,要使用高精度才能将结果精确计算出来。
信息
- ID
- 1880
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 2
- 上传者