1、八層的漢諾塔怎麼玩啊,快,解到第七層時不會了!
前七層是不是自己解開的?如果是的話第8層應該沒問知題啊,我解到了十層,覺得太費時間了,後道面沒玩,每增加一層所用時間翻倍。八層的就是玩了兩次7層的加移動一次最下面那塊一次,如果你玩了前7層的話,第版8層的解法是把A柱前7層移到B柱,把第8塊移到C柱,然後再把B柱的7層移到C柱,不過層數越多越容易亂是真的。你可以不管最下權面那層,直接當重新玩一次上一級
2、漢諾塔4的時候怎麼整
1 把 1-3 搬到 第二塔來
2 把 4 搬到第三塔
3 把 1-3 搬到第三塔。
至於 怎麼把 1-3 搬到第二塔 ,自 其實就是 1-2-->三 3-->二 1-2 -->二
這就是遞歸最常zhidao見的例子。
3、漢諾塔8層求解
漢諾塔,是一個用遞歸解決的問題,具體就是,A柱子上有2個環XY,藉助B環到達C環,遞歸就是這個邏輯,X到B,Y到C,X再到C,這就是函數內容,如果不懂,也可以去網路下 漢諾塔 遞歸
4、5層漢諾塔游戲31步怎麼移到另一個柱子上
5層漢諾塔游戲弄好四層後,先把上面的四個藉助第三根柱子移到第二根柱子上,再把剩下的一個移到第三根柱子上,最後藉助第一根柱子將第二根柱子上的移到第三根柱子上去。
漢諾塔,又稱河內塔,是一款WP7平台上源於印度一個古老傳說的益智類游戲。
漢諾塔:傳說上帝創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上安大小順序摞著64片黃金圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。
5、十四步完成四層漢諾塔
宏觀上我們可以這樣理解:要將zhidaoA上的n個盤子按照要求移動到C上,我們可以想到:先將上邊版的 n-1 個盤子移動到B上,再將A上剩餘的最大的盤子移動到C上,然後將B上所有的盤子移動到C上,這是比較簡單的理解,但是對於演算法實現的過程,還是沒有弄透徹。權
6、如何做一個C語言編程的漢諾塔游戲?要有源代碼。
#include<stdio.h>
void move(char x,char y)
{
printf("%c-->%c\n",x,y);
}
void hanoi(int n,char one ,char two,char three)
{
if(n==1) move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
main()
{
int m;
printf("input the number of disks:");
scanf("%d",&m);
printf("the step to moving %3d diskes:\n",m);
hanoi(m,'A','B','C');
}
演算法介紹:
其實演算法非常簡單,當盤子的個數為n時,移動的次數應等於2^n – 1(有興趣的可以自己證明試試看)。後來一位美國學者發現一種出人意料的簡單方法,只要輪流進行兩步操作就可以了。首先把三根柱子按順序排成品字型,把所有的圓盤按從大到小的順序放在柱子A上,根據圓盤的數量確定柱子的排放順序:若n為偶數,按順時針方向依次擺放 A B C;
若n為奇數,按順時針方向依次擺放 A C B。
(1)按順時針方向把圓盤1從現在的柱子移動到下一根柱子,即當n為偶數時,若圓盤1在柱子A,則把它移動到B;若圓盤1在柱子B,則把它移動到C;若圓盤1在柱子C,則把它移動到A。
(2)接著,把另外兩根柱子上可以移動的圓盤移動到新的柱子上。即把非空柱子上的圓盤移動到空柱子上,當兩根柱子都非空時,移動較小的圓盤。這一步沒有明確規定移動哪個圓盤,你可能以為會有多種可能性,其實不然,可實施的行動是唯一的。
(3)反復進行(1)(2)操作,最後就能按規定完成漢諾塔的移動。
所以結果非常簡單,就是按照移動規則向一個方向移動金片:
如3階漢諾塔的移動:A→C,A→B,C→B,A→C,B→A,B→C,A→C
漢諾塔問題也是程序設計中的經典遞歸問題,下面我們將給出遞歸和非遞歸的不同實現源代碼。
7、漢諾塔5層怎麼走
結合圖:
圓盤:12345柱子:ABC
1→C,2→B,1→B,3→C,1→A,2→C,1→C,4→B;
1→B,2→A,1→A,3→B,1→C,2→B,1→B,5→C;
1→A,2→C,1→C,4→A,1→B,2→A,1→A,4→C;
1→C,2→B,1→B,3→C,1→A,2→C,1→C,完成!
拓展資料
漢諾塔:漢諾塔(又抄稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。
大梵天命令婆羅門把圓盤從下面開始zd按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。
參考資料:網路--漢諾塔
8、漢諾塔問題,五個盤子具體走法
五個柱百子!度分別為1號知 2號 3號
五個盤子道 A B C D E
這樣走內:容
A-3 B-2 A-2
C-3 A-1 B-3 A-3
D-2 A-2 B-1 A-1 C-2 A-3 B-2 1-2
E-3 A-1 B-3 A-3 C-1 A-2 B-1 A-1 D-3 A-3 B-2 A-2 C-3
A-1 B-3 A-3 得出
9、如何玩八層的漢諾塔?
8層漢諾塔共有: 2^8 - 1 = 255個步驟
以下是知移動的過程:(說明: A表示第一個柱子 B表示第二個珠道子C表示第三個柱子-->表示盤的移動方向)
10、C語言--漢諾塔程序執行步驟
這個問題你要先把遞歸搞懂才能理解的, 最好是單跟蹤執行一下, 我這里就簡copy單說一下吧!
hanoi(5, 'a', 'b', 'c');把5個從'a'移到'c'
這時n=5, noe='a', two='b', three='c'
因為n!=1, 執行知else里的
hanoi( 4, 'a', 'c', 'b'); //把上面道4個從a移到b
move( 'a', 'c'); //把第5個從a移到c
hanoi( 4, 'b', 'a', 'c'); //再把那4個從b移到c
上面的很好明白的, 再分析hanoi( 4, 'a', 'c', 'b'); //把上面4個從a移到b,也是執行else
hanoi( 3, 'a', 'b', 'c'); //把上面3個從a移到c
move( 'a', 'b'); //把第4個從a移到b
hanoi( 4, 'c', 'a', 'b'); //再把那3個從c移到b
一直到n=1才結束