2008-04-18 Ruby 测试题(00013)

2008-04-18 Ruby 测试题(00013)

今天是经典题,汉诺塔。
简单介绍一下背景:开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。
题目要求,针对输入的金片数量N,显示整个搬运过程。
三根金刚石棒分别为A,B,C,初始金片都在A上,最终要求都转移到C上。
输出是这样的:
第1步:A-->B
第2步:A-->C
第1步:C-->B
。。。
。。。
回忆递归中...
本帖隐藏的内容需要回复才可以浏览
这不是传说中的,汉诺塔么?
看一下。。
虽说是经典问题但一直没空做一下(或者说懒得做)
今天终于有机会了。

本帖隐藏的内容需要回复才可以浏览
我觉得次数没必要累加计算,肯定是 2 ** n - 1
直接打印具体搬法就行。
你们都太快了......
学习下。。
召唤非递归算法
非递归算法来了

速度虽然慢一点,不过每一步的状况都可以看的很清楚

本帖隐藏的内容需要回复才可以浏览