“汉诺塔”算法

问题描述:

      

           “汉诺塔”问题有时大家有把它习惯的叫做“和尚搬塔”,它来自有古老的印度:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。
问题分析:     

             

            对于这个问题肯定是搬一辈子都搬不完的,以下分析其过程,看到底搬得完不?

             假如只有1个盘,则需搬动1次;

              假如只有2个盘,则需搬动3次;

              假如只有3个盘,则需搬动8次;

              假如只有4个盘,则需搬动15次;

              ……

              不难归纳得到:当有n个盘时,需搬移2的n次方减1.

因此,当有64个盘(n=64)时,需要移动2的64次方减1次,这个数字是大的吓人吧,再转化一下就知道要多少年了,所以是一辈子也无法搬完的。

然而,我又为何要研究其算法啊?这个问题我还真不知道,但归咎我们还是可以思考一下其移动的过程,是如何移动的啊!
算法研究(实现):

           

         先将这个问题构建一个简单的数学模型,以方便研究。假设三根柱子分别编号为A,B,C,盘的个数为n,A柱子上从下到上按由大到小叠放着n个的圆盘,现在把所有盘子一个一个移动到柱子C上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动?

更多请见:http://www.mark-to-win.com/tutorial/50539.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值