【问题标题】:Towers of Hanoi variation pseudocode河内塔变体伪代码
【发布时间】:2013-01-16 20:38:59
【问题描述】:

这是原始河内塔问题的变体。相同的规则适用,但不是只有一堆 n 个磁盘,而是两个。左边一叠红色圆盘,右边另一叠紫色圆盘。最终的配置应该是左边的紫色和右边的红色。一共有3个极点。

我无法理解/创建用于解决此问题的算法的伪代码。请帮忙。

【问题讨论】:

  • 我错过了什么?一件从红到空杆,一次一件。然后用紫色重复,然后再用红色?
  • 你应该展示你的伪代码,表明你了解河内塔问题,以及如何修改它。另外,每个极上可以有多少个磁盘?我希望您仍然没有提供信息来正确解决此问题。这似乎并不比最初的问题更难,因为这两种颜色可以很容易地解决。

标签: algorithm towers-of-hanoi


【解决方案1】:

您提出的问题通常无法解决。根据wikipedia的说法,最琐碎的多栈游戏有两个栈和四个杆,一般来说杆/桩的数量是栈的两倍。

在 2 堆 x 3 极的情况下,您可以很快看到对于 n > 1,您不能走得太远。最小的两个圆盘占据两个或一个杆的顶部,因此您永远不能交换第二小的两个圆盘,因为这总是需要一个临时杆。

【讨论】:

    【解决方案2】:

    因为这是作业,所以给你答案是错误的,我建议你用图形解决河内塔问题。

    然后,添加修改,看看您的原始解决方案如何与新更改一起使用。

    您应该看到原件可能失败的地方,但在以图形方式查看时进行修改会更容易。

    如果您选择一种易于做图形解决方案的语言,那么您可以很快地做到这一点。

    例如,GWT 可能是一个不错的选择,或者 Rails,尽管 TCL/TK 也很容易。

    【讨论】:

    • 我有一个算法,其中 1. 向右移动 n-1 个堆栈 2. 将 1 个磁盘(红色)移动到中间 3. 将 2n-2 个堆栈移动到中间 4. 移动 1 个磁盘(紫色) 向左 5. 向左移动 2n-2 个堆栈 6. 向右移动 1 个磁盘(红色) 7. 将 2n-2 堆栈排序为伪代码部分正在杀死我的每种颜色。
    • 如果你有三个杆子并且你做步骤(1),那么你在同一杆子上有紫色和红色?所以你可以在每个极上放置任意数量的磁盘?或者,实际上有 4 个极点吗?
    • 是的 n 个 3 极磁盘。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多