【发布时间】:2014-02-18 20:58:41
【问题描述】:
我正在尝试解决河内塔的变体。在这种情况下,我有两个塔,高度相同,磁盘大小相同。只要磁盘大小相同或更小,我就可以将它们堆叠在一起。颜色不影响堆叠能力。
我有三个钉子和两个塔,任务是交换两个塔。
我最初的方法是用交替的颜色建造一座塔,然后用不同的钉子向后移动。
我只是认为这不是最优雅的解决方案。有没有更好的方法来做到这一点?
更新:
我以为我已经很接近解决这个问题了,但我没有。我在纸上记录了所有的动作(n=3),它看起来与原始算法非常相似,只是很多动作都做了两次。不幸的是,我无法将其放入递归算法中。这很令人沮丧。有人有想法吗?
【问题讨论】:
-
“三个钉子和两个塔” - 如“最初两个树钉包含 1-1 个塔”?
-
是的,三个钉子中的两个分别包含一个塔。相同的高度,相同的磁盘大小只是不同的颜色(比如一种绿色,一种红色)。两者都需要交换位置。
标签: algorithm recursion towers-of-hanoi