3号盘子的目标柱是C,但是已经有了1号盘子,我们最直觉的反映就是——将碍事的盘子搬到另一根柱子上面去。于是,我们要做的是(规律2):保存当前柱的信息(柱子号、应该搬动的最下面一块盘子的号,和它的目标柱),以备当障碍清除后回到现在的柱子继续搬,将当前柱转换为碍事的盘子所在的柱子。假设这样若干步后,我们将7号盘子从A搬到了C,此时,保存当前柱号的栈一定是空了,我们该怎么办呢?
显而易见的,转换当前柱为B,把6号盘子搬到C。由此可得出(规律3):假设当前的问题规模为n,搬动第n个盘子到C后,问题规模减1,当前柱转换到另一个柱子,最下面的盘子的目标柱为C。
更多内容请看C/C++技术专题 数据结构 数据结构教程专题,或 ...[ 查看全文 ]