摘要:漢諾塔問題描述有三個圓柱,其中上從上至下放置了從小到大個圓盤,一次只能移動一個圓盤,且大的圓盤不能放在小圓盤之上,要求打印出從將圓盤移到的方案。
漢諾塔問題描述:有A, B, C三個圓柱,其中A上從上至下放置了從小到大n個圓盤,一次只能移動一個圓盤,且大的圓盤不能放在小圓盤之上,要求打印出從A將圓盤移到C的方案。
當n = 1時, A->C
當n = 2時, A->B, A->C, B->C
當n = 3時, [A->C, A->B, C->B,] A->C,[B->A, B->C, A->C]
當n = 4時, 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
當n = 5時, 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
當n > 2時,第n項,[A->B],A->C,[B->C]
第n-1項,A->B [A->C],A->B,[C->B] B->C [B->A],B->C,[A->C] 第n-1-1項, 第n-1項,A->C(此處的C應該是B),A->C,和第n-1-1項,A->B(此處的B應是C),B->C …… 如此重復,可以用遞歸求得結果
由此,不難看出,計算n個圓盤,所需要的次數(shù)為f(n) = 2*f(n-1)+1
代碼:
const move=(a,c)=>{ console.info(`${a}->${c}`) } const hanoi = (n,a,b,c)=>{ if(n === 1){ move(a,c) }else{ //[A->B] hanoi(n-1,a,c,b); move(a,c); //[B->C] hanoi(n-1,b,a,c); } }
參考:從fibonacci和漢諾塔看分治法
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/88905.html
摘要:應用分治法是一種很重要的算法。字面上的解釋是分而治之,就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。 ...
摘要:漢諾塔問題有三根柱子,源桿,暫存桿,目的桿上有層盤子,由小到大向下排列,現(xiàn)需要將桿的盤子移到桿中要求大的盤在下面,小的盤在上面一次只能移動一個盤子個人思路先分析問題,用數(shù)學的歸納法當只有一個盤時,直接移動當有兩個盤時,先將小的移到暫存桿,再 漢諾塔問題: 有三根柱子,源桿A,暫存桿temp,目的桿C A上有n層盤子,由小到大向下排列,現(xiàn)需要將A桿的盤子移到C桿中 ...
摘要:學編程,學,算法也是必不可缺的,這一次給大家?guī)硪粋€經(jīng)典的遞歸算法題,漢諾塔。當我們把層都搬到了中間柱的時候,只需要把最大的那個盤,從搬到柱就好了,剩下的怎么辦呢柱永遠是目標柱,我們不需要去移動它。 學編程,學IT,算法也是必不可缺的,這一次給大家?guī)硪粋€經(jīng)典的遞歸算法題,漢諾塔。算是算法的入門小題目之一吧~ 視頻教程 什么是漢諾塔? 我這里直接拉來一個圖解釋一下(掛了請聯(lián)系我)sho...
摘要:學編程,學,算法也是必不可缺的,這一次給大家?guī)硪粋€經(jīng)典的遞歸算法題,漢諾塔。當我們把層都搬到了中間柱的時候,只需要把最大的那個盤,從搬到柱就好了,剩下的怎么辦呢柱永遠是目標柱,我們不需要去移動它。 學編程,學IT,算法也是必不可缺的,這一次給大家?guī)硪粋€經(jīng)典的遞歸算法題,漢諾塔。算是算法的入門小題目之一吧~ 視頻教程 什么是漢諾塔? 我這里直接拉來一個圖解釋一下(掛了請聯(lián)系我)sho...
閱讀 882·2021-11-23 09:51
閱讀 1089·2021-11-15 17:57
閱讀 1667·2021-09-22 15:24
閱讀 812·2021-09-07 09:59
閱讀 2221·2019-08-29 15:10
閱讀 1849·2019-08-29 12:47
閱讀 751·2019-08-29 12:30
閱讀 3369·2019-08-26 13:51