1 条题解

  • 0
    @ 2023-9-28 22:24:55

    经典汉诺塔问题,有 A,B,C 三根柱子,开始时 A 柱有 n 个圆盘,圆盘大的必须放在下面(移动过程中也一样),每一步移动能且只能移动一个圆盘,求把所有圆盘移到 C 处最少步数。 公式推导:

    1. 当只有一个圆盘时,显然直接将圆盘移到 C 处,此时得到 T(1)=1 。
    2. 我们考虑 n=k 是已经得到 T(k),则当 n=k+1 时,我们要让大盘移到 C 处,必须先用 T(k) 步把 k 个小盘移到 B 处(这样才能让大盘的移动没有多余步骤),然后还要再用 T(n) 步将 k 个小盘移到 C 处,得到 T(k+1)=T(k2+1
    3. T(k+1)+1=2×(T(k)+1) 可以得到 {T(n)+1} 为公比为 2 的等比数列。
    4. 最终求得的公式就是广为人知的 T(n)=2n1

    这道题由于 n 比较大,要使用高精度才能将结果精确计算出来。

    信息

    ID
    1880
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    3
    已通过
    2
    上传者