[POJ1958][Strange Tower of Hanoi]

题目描述

求解 \(n\) 个盘子 \(4\) 座塔的 Hanoi 问题最少需要多少步

问题分析

考虑 \(3\) 座塔的 Hanoi 问题,记 \(f[i]\) 表示最少需要多少步, 则 \(f[i] = 2 * f[i - 1] + 1\) , 即把前 \(n - 1\) 个盘子从 \(A\) 移动到 \(B\), 然后把最下面的盘子移动到 \(C\), 最终把前面的 \(n - 1\) 个盘子移到 \(C\)

考虑把4个盘子的情况转移到三个的情况,则有 $$f[i] = \min_{1 \le i < n} {2 * f[i] + d[n - i]}$$

其中 \(f[1] = 1\).上式的意义是先把 \(i\) 个盘子在 \(4\) 她模式下移动到 \(B\) 柱,然后把 \(n-i\) 个盘子在 \(3\)塔模式下移到 \(D\) 柱。最后把 \(i\) 个盘子在 \(4\) 塔模式下移到 \(D\)柱,考虑所有可能的 \(I\) 取最小值,就是上述式子的意义。

推广

考虑 \(n\) 个盘子在 \(m\) 个塔下的最小值。式子与上述一样,增加一位表示第几种,复杂度 \(n^3\)

posted @ 2018-10-31 17:10  AlessandroChen  阅读(138)  评论(0编辑  收藏  举报