HDU 2064 遞推 漢諾塔III

2022-05-22 10:36:10 字數 474 閱讀 2975

將柱子從左到右依次編號為a、b、c

設將n個盤子從一端移動到另一端的最少步數為f(n)

則f(n)和f(n-1)的遞推關係為:f(n) = 3 × f(n-1) + 2

初始狀態a柱子上面有n個盤子,將上面的n-1個移到c柱子上需要f(n-1),然後將最下面的盤子移動到b柱子1步

再將n-1個移回到a柱子上也需要f(n-1),將最下面的盤子移到c柱子1步,最後將a柱子上的移到c上面f(n-1)

通項公式也很容易歸納出來:f(n) = 3n - 1

1

//#define local

2 #include 3 #include 4 #include 5

using

namespace

std;

67 unsigned long

long a[40];8

9int main(void)10

**君

漢諾塔移動次數(2064)

漢諾塔一般步驟 將 n 1 個圓盤移動到c柱 第 n 個圓盤移動到c柱 前 n 1 個圓盤再移動到c柱 由步驟可得遞推式 step n step n 1 1 step n 1 2 step n 1 1 step 1 0 即 step n 2 n 1。本題要求每步只能移到b柱或從b柱移出。故 首先將n...

HDU 1207 漢諾塔II(遞推)

problem description 經典的漢諾塔問題經常作為乙個遞迴的經典例題存在。可能有人並不知道漢諾塔問題的典故。漢諾塔 於印度傳說的乙個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從下往上按大小順序摞著64片 圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並...

HDU2077 漢諾塔IV 遞推做法

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