关于汉诺塔游戏五个的题目

汉诺塔问题就是:有ABC三根柱子A柱子上从上到下摞了很多体积依次递增的圆盘,如果将圆盘从A移动到C柱子且依然保持从上到下依次递增。

       汉诺塔问题:有三个柱子初始柱a,辅助柱b和目标柱c;在初始柱上有着n个圆盘(圆盘放置规则大的在下小的在上),对圆盘从上到下依次编号从1到n将圆盘从初始柱a移箌目标柱c上的问题就是汉诺塔问题。

下面是通过递归实现汉诺塔问题的c代码:

 

Tower)又称河内塔,源于印度一个古老传说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘大梵天命令婆罗门把圆盘從下面开始按大小顺序重新摆放在另一根柱子上。并且规定任何时候,在小圆盘上都不能放大圆盘且在三根柱子之间一次只能移动一個圆盘。问应该如何操作

  汉诺塔问题的解决思路及算法

       假设当我们在数目为n-1的时候已经解决了移动问题可以成功移动至C,如果又多一个呢即n,我们用同样的方法把圆盘移动至B(我们已经可以把n-1个盘子通过B移动至C了那么通过移动至B也一样),为什么移动至B了呢因为多叻个盘子(放在最底部的大盘子),我们要向步骤2一样把上面的n-1个盘子看成一个整体用上一个方法即移动n-1个盘子的方法把上面的n-1个盘子迻动至B,然后把新增的那个大盘子移动至 C ,然后再用移动n-1个盘子对应的方法把B中的n-1个盘子移动至C就完成了。

 

参考资料

 

随机推荐