印度有一个关于“世界末日”的古老传说:在世界中心贝拿乐斯的圣庙里,安放着一个黄铜板,板上插着三根宝石针,每根针约50.8厘米,梵天(印度教主神)在创造世界的时候,在其中的一根针上,自下到上,放下了由大到小的64片金片,这就是所谓梵塔,不论白天黑夜,都有一个值班的僧侣按照梵天不渝的法则,把这些金片在三根针上移来移去,一次只能够移一片,并且要求不管在哪一根针上,小片永远在大片的上面,当所有64片都从梵天创造世界时所放的那根上移到另外一根针上时,世界就将在一声霹雳中消失,梵塔,庙宇和众生都同归于尽,这只是一个传说.
为了得到金片个数n=64时的移动次数,首先考虑金片个数较小时的情况,并设金片数为n时的移动次数为hn.经试验发现,当金片个数为1,2,3,4时,完成转移要求分别需要1,3,7,15次移动,即h1=1,h2=3,h3=7,h4=15,并猜测hn=2n-1.一般地,要转移k块金片,只需通过hk-1次移动首先将最上面的k-1片(最大的一片不动)移到另外的一根针上,不妨设转移到B针上,然后将最大的一片移到C针上,最后仍然是保持C针上的最大金片不动,将B针上的k-1片按要求移到C针上,共需移动hk-1次.因此完成K片金片转移需要移动2hk-1+1次.下面证明猜测的正确性:显然n=1,2,3,4时,猜测正确,设n=k-1时需2k-1-1次移动,则hk=2hk-1+1=2(2k-1-1)+1=2k-1所以可知hn=2n-1.h64=264-1=18446744073709511615因为1年中共365×24×60×60=31536000秒,所以完成64片金片太阳、行星(包括地球)是在大约30亿年前由不定形物质形成的.恒星,特别是给太阳提供能量的“原子燃料”还能维持100—150亿年.因此,整个太阳系的寿命无疑要短于200亿年,更远远短于5849亿年).
举一反三
- 一个黄铜板,插着三根针,在第一根针上,从下到上穿着由大到小的64片中心有孔的金片.每天把金片从第一根宝石针移到其余宝石针上.要求一次移动一片,小片永远在大片上面.当64片金片从第一根宝石针移到另一根宝石针上时,需要移动多少次呢?
- 中国大学MOOC: 在梵塔的故事中,如果宝石针上有5片金片,那么按照同样的规则将这些金片移到另一根针上所需要的次数为()。
- 在梵塔的故事中,如果宝石针上有5片金片,那么按照同样的规则将这些金片移到另一根针上所需要的次数为()。 A: 5; B: 31; C: 32; D: 63。
- 假设有一个16层汉诺塔,请问将所有的金片从一根针移动向另一根针需要多少步 ?
- 汉诺塔(Tower of Hanoi)是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。编写一个函数,用递归算法实现汉诺塔问题,输入A柱子上的盘子个数,打印输出搬动盘子顺序。
内容
- 0
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子A、B、C之间一次只能移动一个圆盘。编程实现:n个盘子的汉诺塔问题的移动步骤输入:(圆盘的数目)n输出:移动步骤例如当n=2时输出:A->BA->CB->C
- 1
假设有一个16层汉诺塔,请问将所有的金片从一根针移动向另一根针需要多少步 ? A: 65533 B: 65535 C: 65537 D: 32767
- 2
汉诺塔问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 以下程序使用递归的方法实现汉诺塔问题。函数Towers参数的含义如下:n是汉诺塔的层数,即圆盘的个数,fr是移动的起始柱子,to是移动到的目标柱子,spare是中间过渡的柱子。(需插入图片)[img=589x181]1803c838cd8c13b.png[/img]
- 3
如果一个特征根满足幅值条件,则它一定位于是根轨迹上。
- 4
转化炉管一共有()根,火嘴一共为()个。