【问题标题】:Variation on the Towers of Hanoi (Twin-Towers)河内塔的变化(双塔)
【发布时间】:2014-02-18 20:58:41
【问题描述】:

我正在尝试解决河内塔的变体。在这种情况下,我有两个塔,高度相同,磁盘大小相同。只要磁盘大小相同或更小,我就可以将它们堆叠在一起。颜色不影响堆叠能力。

我有三个钉子和两个塔,任务是交换两个塔。

我最初的方法是用交替的颜色建造一座塔,然后用不同的钉子向后移动。

我只是认为这不是最优雅的解决方案。有没有更好的方法来做到这一点?

更新:
我以为我已经很接近解决这个问题了,但我没有。我在纸上记录了所有的动作(n=3),它看起来与原始算法非常相似,只是很多动作都做了两次。不幸的是,我无法将其放入递归算法中。这很令人沮丧。有人有想法吗?

【问题讨论】:

  • “三个钉子和两个塔” - 如“最初两个树钉包含 1-1 个塔”?
  • 是的,三个钉子中的两个分别包含一个塔。相同的高度,相同的磁盘大小只是不同的颜色(比如一种绿色,一种红色)。两者都需要交换位置。

标签: algorithm recursion towers-of-hanoi


【解决方案1】:

有一个网站可以处理各种版本的Tower of Hanoi

此外,如果您想递归地执行此操作,您实际上不需要知道会发生什么。您可以递归地尝试所有可用的移动,直到找到解决方案。

【讨论】:

  • "您可以递归地尝试所有可用的移动,直到找到解决方案。" - 你总是可以写一个蛮力算法,但是如果状态空间很大,那就不是明智的做法。
  • 我同意这一点。这只是一个注释,因为recursion 是标签之一。
  • 是的。我知道那个网站,但它只是关于移动的数量。但我正在寻找一个好的算法来解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
相关资源
最近更新 更多