双列汉诺塔的问题~高手进来
问题:有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个汉诺塔的步骤!
------解决方案--------------------在过程中是否允许出现以下的情况:
某根柱子上存在同中颜色的大盘在小盘上面(中间有其它颜色的隔开)?