6層的漢諾塔怎麼玩,漢諾塔該怎麼玩,方法

時間 2022-02-13 01:08:49

1樓:莊生曉夢

6層的漢諾塔將三個柱子依次標記為a、b、c,則走法如下:

a------->ba------->cb------->ca------->bc------->ac------->ba------->ba------->cb------->cb------->ac------->ab------->ca------->ba------->cb------->ca------->;

bc------->ac------->ba------->bc------->ab------->cb------->ac------->ca------->bc------->ac------->ba------->ba------->ca------->ba------->cb------->cb------->c。

玩法公式:

把三根柱子按順序排成「品」字型,把所有圓盤按從大到小的順序放於柱子a上,根據圓盤數量來確定柱子排放的順序:

n若為偶數的話,順時針方向依次擺放為:abc;而n若為奇數的話,就按順時針方向依次擺放為:acb。

這樣經過反覆多次的測試,最後就可以按照規定完成漢諾塔的移動。

2樓:百里楹

a------->b

a------->c

b------->c

a------->b

c------->a

c------->b

a------->b

a------->c

b------->c

b------->a

c------->a

b------->c

a------->b

a------->c

b------->c

a------->b

c------->a

c------->b

a------->b

c------->a

b------->c

b------->a

c------->a

c------->b

a------->b

a------->c

b------->c

a------->b

c------->a

c------->b

a------->b

a------->c

b------->c

b------->a

c------->a

b------->c

a------->b

a------->c

b------->c

b------->a

c------->a

c------->b

a------->b

c------->a

b------->c

b------->a

c------->a

b------->c

a------->b

a------->c

b------->c

a------->b

c------->a

c------->b

a------->b

a------->c

b------->c

b------->a

c------->a

b------->c

a------->b

a------->c

b------->c

1,漢諾塔只要掌握規律,多少層都是一樣的。最重要的是第一塊放在哪兒,單數層的漢諾塔一定要放在第三柱,雙數層的要放在第二柱。如果你會六層的漢諾塔,(將第一塊放在第三柱),將六塊都移到第二柱,最後一塊移到第三柱,再如前法將上面六塊都移到第三柱。

2,河內塔是根據乙個傳說形成的乙個問題:有三根桿子a,b,c。a桿上有n個(n>1)穿孔圓盤,盤的尺寸由下到上依次變小。

漢諾塔該怎麼玩,方法

3樓:夏娃的夏天

漢諾塔演算法介紹:

一位美國學者發現的特別簡單的方法:只要輪流用兩次如下方法就可以了。

把三根柱子按順序排成「品」字型,把所有圓盤按從大到小的順序放於柱子a上,根據圓盤數量來確定柱子排放的順序:

n若為偶數的話,順時針方向依次擺放為:abc;而n若為奇數的話,就按順時針方向依次擺放為:acb。這樣經過反覆多次的測試,最後就可以按照規定完成漢諾塔的移動。

因此很簡單的,結果就是按照移動規則向乙個方向移動金片:

如3階漢諾塔的移動:a→c,a→b,c→b,a→c,b→a,b→c,a→c。

擴充套件資料:

漢諾塔經典題目:

三根相鄰的柱子,標號為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

4樓:匿名使用者

漢諾塔玩法如下:

遊戲裡有三根柱子,左邊的柱子上從下往上按照大小順序摞著n片圓盤。玩家需要做的是把圓盤從下面開始按從大順序重新擺放在右邊的柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。

柱子:在乙個平板底座上間隔一定距離有三根完全一樣的柱子1,2,3,柱子的長短決定於所移盤子的個數。

底座:長方體的木板,上有均勻的三個插孔。

5樓:紀嶼

漢諾塔玩法如下:

有三根相鄰的柱子,標號為a,b,c,a柱子上從下到上按金字塔狀疊放著n個不同大小的圓盤,現在把所有盤子乙個乙個移動到柱子b上,並且每次移動同一根柱子上都不能出現**子在小盤子上方

拓展資料:

漢諾塔其實演算法非常簡單,當盤子的個數為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.反覆進行⑴⑵操作,最後就能按規定完成漢諾塔的移動。所以結果非常簡單,就是按照移動規則向乙個方向移動金片:

如3階漢諾塔的移動:a→c,a→b,c→b,a→c,b→a,b→c,a→c漢諾塔問題也是程式設計中的經典遞迴問題,下面我們將給出遞迴和非遞迴的不同實現源**。

6樓:勇者無畏

還學者!孩子二年級要學, 之前沒找著規律 ,下午研究了下,其實很簡單的!用最少步數多少層也能解!

只是時間而已!abc三個柱子: a柱移到b柱如果是奇數就是a1先移到b 如果是偶數就是a1先移到c(就是遇到偶數a1要隔乙個柱子)!

如果移到c柱則反之(a1奇數隔偶數不隔)以次類推

7樓:匿名使用者

其實漢諾塔只要掌握規律,多少層都是一樣的。最重要的是第一塊放在哪兒,單數層的漢諾塔一定要放在第三柱,雙數層的要放在第二柱。如果你會六層的漢諾塔,(將第一塊放在第三柱),將六塊都移到第二柱,最後一塊移到第三柱,再如前法將上面六塊都移到第三柱。

就ok了。

8樓:以可心

遵循的原則是大的盤需要擺放在下面,小的擺在上面,一次只能拿乙個,交替輪換著挪動圓盤。

9樓:裙子

這個關鍵要知道乙個規律一單雙數。知道了這個規律你會節省步數,現在我可以弄到十四分鐘走完十層,靠的就是手速和這個規律。

10樓:匿名使用者

把所有環移動到最後乙個

上面的環只能比下面的小才能放

技巧:移動奇數個環第乙個先移動到目標位置,偶數環到另乙個   漢諾塔的c語言實現

#include"stdio.h"

void move(char x,char y)void hanoi(int n,char one ,char two,char three)

}main()

11樓:張楓逸

汗諾塔遊戲,有三個柱子,分別為起始柱a,輔助柱b和目標柱c。

不管是多少層的遊戲,都可以使用這樣的規律。即最下面一層的圓圈要放到目標柱上,而上面一層的圓圈放在輔助柱上。

例如:一層的汗諾塔,直接放在目標柱a上;二層的汗諾塔,二層要放在目標柱c上,一層放在輔助柱b上,即先將一層放在輔助柱b上,將二層放在目標柱c上,再將一層放在目標柱c上;三層的汗諾塔,三層要放在目標柱c上,二層則放在輔助柱b上,此時套用前兩層的方法來移動圓圈。四層的汗諾塔,四層要放在目標柱c上,三層則放在輔助柱b上,此時套用前三層的方法來移動圓圈。

以此類推,層數越多,擺放的步驟就越多,重複的操作就越多。

在移動的過程中間,起始柱a,輔助柱b和目標柱c就變成了圓圈所在的柱子a',圓圈要暫時放置的柱子b'和圓圈最終放置的柱子c'。這個時候,依然要注意套用上面的規律。只是,層數增多的情況下,移動的步驟增多,移向的柱子不斷變化,給遊戲帶來了一定的難度。

只要確定當前的目標柱和輔助柱,耐心的移動圓圈,就一定可以順利完成遊戲。

例如:十層的汗諾塔,第十層要放在目標柱c上,第九層則放在輔助柱b上。為了完成九層圓圈的移動,需要將第八層移動到目標柱c上。

以此類推,七層是輔助柱b,六層是目標柱c,五層是輔助柱b,四層是目標柱c,三層是輔助柱b,二層是目標柱c,一層是輔助柱b。在這些過程中,相對一層來說,輔助柱b就是其目標柱c',而相對二層來說,目標柱c就是其目標柱c'。達成每一層移向目標柱c'的目標,也就達成了所有層數移向目標柱c的目標!

以上全部內容為個人玩汗諾塔的經驗,希望可以幫助到玩汗諾塔的親們!

5層漢諾塔最少幾步完成

路過零下176度的小朋友妍 漢諾塔5層最少31步 a c a b c b a c b a b c a c a b c b c a b a c b a c a b c b a c b a b c a c b a c b c a b a b c a c a b c b a c b a b c a c 推...

程式設計實現盤子的漢諾塔問題(遞迴演算法)

以下是5個盤子的漢諾塔程式,用的是遞迴演算法 include include using namespace std ofstream fout honnoi.txt int num 1 記錄步數 void move int n,char x,char y void hannoi int n,cha...

用函式編漢諾塔問題的程式,C語言函式遞迴呼叫漢諾塔問題

include include include hanoil 子程式,實現將n個盤子從a移動到c void hanoil int n,char a,char b,char c 主程式 int main puts the steps of moving plates are hanoil n,a,b,...

求漢諾塔遞迴全過程的演算法詳解圖,記得一定要是圖釋哦

是什麼意思呀。這個演算法 那麼簡單沒必要搞得那麼複雜吧。an an 1 1 你明白這個等式的意義嗎?這個等式已經包含了遞迴演算法的全部含義。an 表示 n個數的和,an 1 表示n 1個數的和 an an 1 1 表示n個數的和可以通過n 1個數的和來求的。上述說明哪些情況可以使用遞迴呢?那就是 已...