河內(nèi)塔,(又稱漢諾塔)問題是印度的一個古老的傳說。
河內(nèi)塔_河內(nèi)塔 -古老傳說
河內(nèi)塔(又稱漢諾塔)問題是印度的一個古老的傳說。開天辟地的神勃拉瑪在一個廟里留下了三根金剛石的棒,第一根上面套著64個圓的金片,最大的一個在底下,其余一個比一個小,依次疊上去,廟里的眾僧不倦地把它們一個個地從這根棒搬到另一根棒上,規(guī)定可利用中間的一根棒作為幫助,但每次只能搬一個,而且大的不能放在小的上面。解答結(jié)果請自己運行計算,程序見尾部。面對龐大的數(shù)字(移動圓片的次數(shù))18446744073709551615,看來,眾僧們耗盡畢生精力也不可能完成金片的移動。
河內(nèi)塔_河內(nèi)塔 -演變游戲
后來,這個傳說就演變?yōu)闈h諾塔游戲:
1.有三根桿子A,B,C。A桿上有若干碟子
2.每次移動一塊碟子,小的只能疊在大的上面
3.把所有碟子從A桿全部移到C桿上
問題解決步驟:2的n次方-1,n為河內(nèi)塔的階數(shù)
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 %cn",n,A,C);
}
else
{
hanoi(n-1,A,C,B); /* Copyrighter by SS7E */
printf("Move disk %d from %c to %cn",n,A,C);
hanoi(n-1,B,A,C); /* Copyrighter by SS7E */
}
}
main() /* Copyrighter by SS7E */
{
int n;
printf("請輸入數(shù)字n以解決n階漢諾塔問題:n");
scanf("%d",&n);
hanoi(n,'A','B','C');
}/* Copyrighter by SS7E */

愛華網(wǎng)本文地址 » http://www.klfzs.com/a/8103360103/71674.html
愛華網(wǎng)


