HDU 2077 漢諾塔IV 題解

2021-08-28 18:43:47 字數 543 閱讀 8037

由題意得:

1.此題相較於傳統的漢諾塔問題,多了乙個新限制——從左(右)邊到最右(左)邊時,必須經過中間;少了乙個舊限制——允許最大的盤子放到最上面

2.問題就變成了三個步驟:(一)將(n-1)個盤子從最左邊移到中間,(二)然後加「2」,(三)最後再將這(n-1)個盤子從中間移到最右邊

3.由於最大的盤子能夠承載其餘任意盤子,相當於不存在,所以從前後兩面來看,(一)與(三)的步數是一樣的

4.當「n-1」的值為1、2、3時,(一)對應的步數為1、4、7,得推導公式為:3*(n-1)+1

5.當「n」的值為「1」時,只有步驟(二)

6.**如下:

#includeusing namespace std;

long long hanoi(int n)

; for(int i=1; i<=n; i++)

f[i]=3*f[i-1]+1;

return 2*f[n]+2;

}int main()

return 0;

}

HDU2077 漢諾塔IV 遞推做法

這道題目會用到hdu2064漢諾塔iii的遞推式,可以參考我的另一篇部落格 漢諾塔iii。本問題和iii的區別在於最後乙個圓盤,但恰恰因為最後乙個圓盤,之前的思路需要大的改動 因為我們不知道最後一塊圓盤到底是第幾塊 假設變數 設a i 為將第i塊圓盤從左邊移動到右邊 或從右到左 的步數 b i 為將...

HDU 2077 漢諾塔IV 遞迴 通項公式

剛剛做的hdu 2064很好找規律,回憶一下 b 1 2 b n b n 1 3 2 可得b n 3 n 1 不懂的傳送門 這題題目差不多,就是放寬條件,但只允許把最大的放在最上面。其實我看的時候沒有仔細想。它的輸入已經暴露了它的公式。因為兩題差不多,所以應該也是與3的n次冪有關。計算3的10次為5...

漢諾塔問題解析

漢諾塔 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。這個問題...