汉诺塔的其他相关

作者&投稿:拓盲 (若有异议请与网页底部的电邮联系)
如何理解汉诺塔递归~


5层汉诺塔游戏弄好四层后,先把上面的四个借助第三根柱子移到第二根柱子上,再把剩下的一个移到第三根柱子上,最后借助第一根柱子将第二根柱子上的移到第三根柱子上去。
汉诺塔,又称河内塔,是一款WP7平台上源于印度一个古老传说的益智类游戏。
汉诺塔:传说上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

如果移动一个圆盘需要1秒钟的话,等到64个圆盘全部重新落在一起,宇宙被毁灭是什么时候呢?
让我们来考虑一下64个圆盘重新摞好需要移动多少次吧。1个的时候当然是1次,2个的时候是3次,3个的时候就用了7次......这实在是太累了
因此让我们逻辑性的思考一下吧。
3个的时候能够移动最大的3盘时如图所示。
到此为止用了7次。
接下来如右图,在上面再放上3个圆盘时还要用7次(把3个圆盘重新放在一起需要的次数)。
因此,4个的时候是
“3个圆盘重新摞在一起的次数”+1次+“3个圆盘重新摞在一起需要的次数”
=2x“3个圆盘重新摞在一起的次数”+1次
=15次。
那么,n个的时候是
2x“(n-1)个圆盘重新摞在一起的次数”+1次。
由于1 个的时候是1次,结果n个的时候为(2的n次方减1)次。
1个圆盘的时候 2的1次方减1
2个圆盘的时候 2的2次方减1
3个圆盘的时候 2的3次方减1
4个圆盘的时候 2的4次方减1
5个圆盘的时候 2的5次方减1
........
n个圆盘的时候 2的n次方减1
也就是说,n=64的时候是(2的64次方减1)次。
因此,如果移动一个圆盘需要1秒的话,
宇宙的寿命=2的64次方减1(秒)
2的64次方减1到底有多大呢?动动计算器,答案是一个二十位的数字约是
1.84467440*10^19
用一年=60秒x60分x24小时x365天来算的话,大约有5800亿年吧。
太阳及其行星形成于50亿年前,其寿命约为100亿年。
汉诺塔问题在数学界有很高的研究价值,而且至今还在被一些数学家们所研究。
也是我们所喜欢玩的一种益智游戏,它可以帮助开发智力,激发我们的思维。 有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为H(n)。
首先我们肯定是把上面n-1个盘子移动到柱子C上,然后把最大的一块放在B上,最后把C上的所有盘子移动到B上,由此我们得出表达式:
H⑴ = 1
H(n) = 2*H(n-1)+1 (n>1)
那么我们很快就能得到H(n)的一般式:
H(n) = 2^n - 1 (n>0)
并且这种方法的确是最少次数的,证明非常简单,可以尝试从2个盘子的移动开始证,你可以试试。
进一步加深问题(解法原创*_*):
假如现在每种大小的盘子都有两个,并且是相邻的,设盘子个数为2n,问:⑴假如不考虑相同大小盘子的上下要多少次移动,设移动次数为J(n);⑵只要保证到最后B上的相同大小盘子顺序与A上时相同,需要多少次移动,设移动次数为K(n)。
⑴中的移动相当于是把前一个问题中的每个盘子多移动一次,也就是:
J(n) = 2*H(n) = 2*(2^n - 1) = 2^(n+1)-2
在分析⑵之前
,我们来说明一个现象,假如A柱子上有两个大小相同的盘子,上面一个是黑色的,下面一个是白色的,我们把两个盘子移动到B上,需要两次,盘子顺序将变成黑的在下,白的在上,然后再把B上的盘子移动到C上,需要两次,盘子顺序将与A上时相同,由此我们归纳出当相邻两个盘子都移动偶数次时,盘子顺序将不变,否则上下颠倒。
现在回到最开始的问题,n个盘子移动,上方的n-1个盘子总移动次数为2*H(n-1),所以上方n-1个盘子的移动次数必定为偶数次,最后一个盘子移动次数为1次。
讨论问题⑵,
综上两点,可以得出,要把A上2n个盘子移动到B上,首先可以得出上方的2n-2个盘子必定移动偶数次,所以顺序不变,移动次数为:
J(n-1) = 2^n-2
然后再移动倒数第二个盘子,移动次数为2*J(n-1)+1 = 2^(n+1)-3,
最后移动最底下一个盘子,所以总的移动次数为:
K(n) = 2*(2*J(n-1)+1)+1 = 2*(2^(n+1)-3)+1 = 2^(n+2)-5
开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。计算结果非常恐怖(移动圆片的次数)大约是1.84467440*10^19,众僧们即便是耗尽毕生精力也不可能完成金片的移动了。 其实算法非常简单,当盘子的个数为n时,移动的次数应等于2^n – 1(有兴趣的可以自己证明试试看)。后来一位美国学者发现一种出人意料的简单方法,只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上,根据圆盘的数量确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放 A B C;
若n为奇数,按顺时针方向依次摆放 A C B。
⑴按顺时针方向把圆盘1从现在的柱子移动到下一根柱子,即当n为偶数时,若圆盘1在柱子A,则把它移动到B;若圆盘1在柱子B,则把它移动到C;若圆盘1在柱子C,则把它移动到A。
⑵接着,把另外两根柱子上可以移动的圆盘移动到新的柱子上。即把非空柱子上的圆盘移动到空柱子上,当两根柱子都非空时,移动较小的圆盘。这一步没有明确规定移动哪个圆盘,你可能以为会有多种可能性,其实不然,可实施的行动是唯一的。
⑶反复进行⑴⑵操作,最后就能按规定完成汉诺塔的移动。
所以结果非常简单,就是按照移动规则向一个方向移动金片:
如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C
汉诺塔问题也是程序设计中的经典递归问题,下面我们将给出递归和非递归的不同实现源代码。



汉诺塔算法介绍:
把三根柱子按顺序排成“品”字型,把所有圆盘按从大到小的顺序放于柱子A上,根据圆盘数量来确定柱子排放的顺序:n若为偶数的话,顺时针方向依次摆放为:ABC;而n若为奇数的话,就按顺时针方向依次摆放为:ACB。
这样经过反复多次的测试,最后就可以按照规定完成汉诺塔的移动。因此很简单的,结果就是按照移动规则向一个方向移动金片:如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C。


Lady Ga Ga 多大了 ?
Lady GaGa原名:Stefani Joanne Angelina Germanotta (蒂芬妮·乔安妮·安吉莉娜·杰尔马诺塔)。1986年3月28日出生,白羊座。中文译名:刚出道没发片不太了解她的时候人们叫她“淑女嘎嘎”,后来又有的不同版本的称呼,如嘎嘎夫人、女神卡卡、蕾迪卡卡、加加夫人,不过在专辑横扫全球,拿下3项MTV大奖以后人们叫得最多的还...

《猩球崛起》讲述了什么?
由鲁伯特·瓦耶特导演,詹姆斯·弗兰科、安迪·瑟金斯、汤姆·费尔顿、芙蕾达·平托、布莱恩·考克斯、泰勒·莱伯恩、约翰·利特高、卡琳·考诺娃、泰瑞·诺塔里、理查德·赖丁斯、克里斯托弗·戈登、德文·达尔顿、杰·卡普托、大卫·奥伊罗、杰米·哈里斯等主演的《猩球崛起》在2011-10-28(中国大陆)上映...

魔兽票房为什么在中国那么火而在国外票房惨淡? 求专业详细回答(暴雪...
《变形金刚》《超人》《龙珠》,那些年我们追过的IP,已经孵化成越来越多的电影、游戏、玩具以及文化相关产品,但它们大多都架构于西方奇幻故事背景下。东方奇幻呢?仅是围绕《西游记》这个古老的IP,过去两三年就上映了多部大电影。然而除了《大圣归来》略带些“鼓励分”的口碑之外,其余都难如人意。

中江县14782665161: 汉诺塔的介绍 -
钟离袁蒲地: 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘.

中江县14782665161: 有关汉诺塔的传说!? -
钟离袁蒲地: 相传在印度的贝纳雷斯有座大寺庙,寺庙内有一块红木板,上面插着三根钻石棒,在盘古开天地,世界刚创造不久之时,神便在其中的一根钻石棒上放了64枚纯金的圆盘.有一个叫婆罗门的门徒,不分日夜地向这座寺庙赶路,抵达后,就尽力将...

中江县14782665161: 汉诺塔怎回事? -
钟离袁蒲地: 汉诺塔的由来汉诺塔是源自印度神话里的玩具.上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘.上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘.有预言说,这件事完成时宇宙会在一瞬间闪电式毁灭.也有人相信婆罗门至今还在一刻不停地搬动着圆盘.

中江县14782665161: 递归 汉诺塔有些问题只能用递归来解决.一个典型的例子就是汉诺塔问题.问题的提法是:“传说婆罗门庙里有一个塔台,台上有3根标号为A,B,C的用钻石... -
钟离袁蒲地:[答案] void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b ) ; printf(“%c --> %c\n”, a , c) ; hanoi ( n-1, b, a, c ) ; ...

中江县14782665161: 如何理解汉诺塔模型? -
钟离袁蒲地: 汉诺谈问题是一个转换盘子问题 汉诺塔(又称河内塔)问题是印度的一个古老的传说.开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧...

中江县14782665161: 汉诺塔问题公式是什么? -
钟离袁蒲地: 汉诺塔问题(又称河内塔问题)是根据一个传说形成的一个问题:有三根杆子A,B,C.A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小.要求按下列规则将所有圆盘移至C杆:1. 每次只能移动一个圆盘; 2. 大盘不能叠在小盘上面. ...

中江县14782665161: 汉诺塔问题 -
钟离袁蒲地: n=2^t-1(n为次数,t为碟子数) 有四个碟子 所以n=2^4-1=15 选B 汉诺塔(又称河内塔)问题是印度的一个古老的传说.开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个...

中江县14782665161: 汉诺塔的游戏规则如下:如图有A,B,C三根套杆,在A上有n个大小不等的盘子,中间有孔可以套在杆子上面,大盘在下,小盘在下,现在要将A杆上面的所有... -
钟离袁蒲地:[选项] A. 31 B. 15 C. 11 D. 9

中江县14782665161: 汉诺塔c语言算法.注意是算法 -
钟离袁蒲地: 我以前收藏了一个别人的回答,你看看吧:递归算法的出发点不是由初始条件出发,而是把出发点放在求解的目标上,从所求的未知项出发逐次调用本身的求解过程,直到递归的边界(即初始条件).汉诺塔问题的重点是分析移动的规则,找...

中江县14782665161: 有趣的汉诺塔作文怎么写?有什么范文? -
钟离袁蒲地: 每个人都有一个色彩斑斓的童年.有的童年像身披绿衣的大山,它的一草一木都有着美好的回忆;有的童年像个一望无际的天空,每颗星星都是件件开心的往事;有的童年像……而我的童年却像一片蓝色的汪洋大海,往事像条条有趣的小鱼,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网