Moe*_*ini 4 algorithm towers-of-hanoi
如你所知,有一些方法可以解决河内塔,但是他们要求所有磁盘在开始时都在一个塔中.
现在我想知道有没有办法解决它,其中磁盘已经开始在塔之间随机分布.
是的,它仍然可以解决(假设较小的磁盘顶部没有大磁盘).例如:
1
4 2
6 5 3
-------------
Run Code Online (Sandbox Code Playgroud)
找到包含1的最大连续堆栈.这里是{1,2}.将该堆栈移动到下一个最大的磁盘上,忽略其他任何磁盘.您可以在此步骤中使用标准Tower of Hanoi算法.
1
4 2
6 5 3
-------------
Run Code Online (Sandbox Code Playgroud)
重复上述步骤.包含1的下一个连续堆栈现在是{1,2,3}.将其移至4
1
2
3
4
6 5
-------------
Run Code Online (Sandbox Code Playgroud)
同样的事情 - 将{1,2,3,4}移到5.
1
2
3
4
6 5
-------------
Run Code Online (Sandbox Code Playgroud)
现在将{1,2,3,4,5}移到6,你已经完成了.如果需要将整个堆栈移动到特定的挂钩,请再次使用标准解决方案.