日期:2014-05-20  浏览次数:20749 次

双列汉诺塔的问题~高手进来
问题:有3跟柱子X、Y、Z。其中X和Z上面分别有红色和兰色的盘子。盘子是按照从大到小的顺序叠放起来的。现在要求把X柱子上的盘子和Z柱子上的盘子互相交换,在移动的过程中同种颜色的盘子不能大的压小的。请问这个该怎么样做?

------解决方案--------------------
mark!
------解决方案--------------------
是不是不同颜色的就可以随便压?如果是的话直接把Z当成空,红-> Y,
Y当成空,兰-> X,
X当成空,红-> Z

是这个意思?
------解决方案--------------------
看看吧 http://zhidao.baidu.com/question/2596025.html
“著名”的 谭浩强写的那本C语言的课本里也有 楼主可以去查查
------解决方案--------------------
空当接龙!
------解决方案--------------------
经典的递归题。

------解决方案--------------------
有解吗?如果X Z上的盘子大小相等的话
------解决方案--------------------
这也要高手?
------解决方案--------------------
不是这么简单吧,各位大虾们:
比如X上有2个盘子,Z上有1个盘子,
那么至少需要5次。
如果X=2,Z=2,那么好像至少需要9次
如果X=3,Z=1 那么需要8次

我还不会,思考中……
------解决方案--------------------
> 是不是不同颜色的就可以随便压?如果是的话……

lower0661(我的黑夜风吹不走) 说的很对。

不过我估计题目的要求应该更严一点,也就是说,不同颜色的盘子也应该是“大不压小”,否则真就太简单了 :>
------解决方案--------------------
up
------解决方案--------------------
办法1,借助Z柱子把X上的都移动到Y;
借助Y柱子把Z上的都移到X;
借助X柱子把Y上的都移到Z。
很明显,这个方案不是最好的方案~
用了相当于3个汉诺塔的步骤!


------解决方案--------------------
在过程中是否允许出现以下的情况:
某根柱子上存在同中颜色的大盘在小盘上面(中间有其它颜色的隔开)?