杭電OJ 1207 漢諾塔II

2021-06-21 04:33:49 字數 515 閱讀 2487

雖然本題只是在原來的漢諾塔的基礎上增加了乙個柱子,但是不能根據先將上面的n-2個圓盤通過c和d移動到b上,然後再將第n-1個盤子移動到c上,接著講最後乙個圓盤移動到d上(假設d是最終的位置),最後將上面的n-2個圓盤通過a ,c移動到d上,所以一共需要f[n]=2*f[n-2] + 3步;當n<6時情況確實是這樣的,但是當情況大於6時就不是這樣的,更加詳細的講解請參考 ,我就不再這兒班門弄斧了。

c++**:(因為事先知道n為64的時候數字不會很大,所以在做迴圈的時候作弊了一下,大數實在是不是太好搞)

#include #include #include #include using namespace std;

const long n =65;

long arr[n];

int main()

arr[i] = min;

} int n;

while(scanf("%d",&n)!=eof)

return 0;

}

杭電 1207 漢諾塔II

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

杭電1207 漢諾塔II

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

hdoj1207 漢諾塔II 多柱漢諾塔問題

題目鏈結 思路 首先這是個多柱漢諾塔問題,對於n階漢諾塔,具體步驟如下 1.首先我們將x個盤子移到b柱,步數為step x 2.然後將n x個盤子移到c柱,步數為2 n x 1 3.最後我們再將b柱上的x個盤子移到c柱,步數為step x 4.上面的x在1到n之間取值,對於每乙個x,我們可以求出乙個...