着名智力游戏 梵塔


着名智力游戏 梵塔

文章插图
梵塔(着名智力游戏)【着名智力游戏 梵塔】梵塔是一款着名的智力游戏 。
后来,这个传说就演变为汉诺塔游戏:1.有三根桿子A,B,C 。A桿上有若干碟子2.每次移动一块碟子,小的只能叠在大的上面3.把所有碟子从A桿全部移到C桿上解决算法(C语言) /* Copyrighter by SS7E */#include<stdio.h> /* Copyrighter by SS7E */void hanoi(int n,char A,char B,char C) /* Copyrighter by SS7E */{if(n==1){printf("Move disk %d from %c to %c\n",n,A,C);}else{hanoi(n-1,A,C,B); /* Copyrighter by SS7E */printf("Move disk %d from %c to %c\n",n,A,C);hanoi(n-1,B,A,C); /* Copyrighter by SS7E */}}main() /* Copyrighter by SS7E */{int n;printf("请输入数字n以解决n阶汉诺塔问题:\n");scanf("%d",&n);hanoi(n,'A','B','C');}/* Copyrighter by SS7E */如果按照最快的速度移动即不重複地移想移动第二片金片则需要先移动第一片想移动第三片金片则需要先移动第二片...想移动第64片需要先移动第63片移动第一片需要1次移动第二片需要3次(必须将第一片移到第二片上才能将第三片移下来)移动第三片需要7次移动第四片需要15次......可以看出每想移动一片就需要将上边的所有片摞在一起所以每移动一片都需要操作上一片次数的二倍+1(自己那片动)所以由数列可知移动第n片需要2^n-1次64片就需要2的64次方减1次2的64次方...如图:已知有三根针分别用1,2,3表示,在一号针中从小放n个盘子,现要求把所有的盘子从1针全部移到3针,移动规则是:使用2针作为过度针,每次只移动一块盘子,且每根针上不能出现大盘压小盘.找出移动次数最小的方案.程式如下:program fanta;varn:integer;procedure move(n,a,b,c:integer);beginif n=1 then writeln(a,'--->',c)else beginmove(n-1,a,c,b);writeln(a,'--->',c);move(n-1,b,a,c);end;end;beginwrite('Enter n=');read(n);move(n,1,2,3);end.的详细解析(pascal)