四根柱子處理漢諾塔問題的最少次數

2021-07-25 07:42:37 字數 1063 閱讀 6672

經典的漢諾塔問題經常作為乙個遞迴的經典例題存在。可能有人並不知道漢諾塔問題的典故。漢諾塔**於印度傳說的乙個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從下往上按大小順序摞著64片**圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一回只能移動乙個圓盤。有預言說,這件事完成時宇宙會在一瞬間閃電式毀滅。也有人相信婆羅門至今仍在一刻不停地搬動著圓盤。恩,當然這個傳說並不可信,如今漢諾塔更多的是作為乙個玩具存在。gardon就收到了乙個漢諾塔玩具作為生日禮物。

gardon是個怕麻煩的人(恩,就是愛偷懶的人),很顯然將64個圓盤逐一搬動直到所有的盤子都到達第三個柱子上很困難,所以gardon決定作個小弊,他又找來了一根一模一樣的柱子,通過這個柱子來更快的把所有的盤子移到第三個柱子上。下面的問題就是:當gardon在一次遊戲中使用了n個盤子時,他需要多少次移動才能把他們都移到第三個柱子上?很顯然,在沒有第四個柱子時,問題的解是2^n-1,但現在有了這個柱子的幫助,又該是多少呢?

input

包含多組資料,每個資料一行,是盤子的數目n(1<=n<=64)。
output

對於每組資料,輸出乙個數,到達目標需要的最少的移動數。
sample input

1

3

12

sample output

1

581

公式為

當n == 1 時,f(1) = 1

當n > 1時,f(n) = min

#include 

#include

#include

#include

#include

using

namespace

std;

void deal(double *a)

a[n] = min;

}}int main()

return

0;}

四個柱子的漢諾塔

和三個柱子的最初的漢諾塔很類似,只是多了乙個柱子,相當於快取區大了一些,處理的速度自然快了一些。粗略的c 並沒有使先移動到第四根柱子上面的圓盤的數量是最優 include int count 0 void hanoi char s,char t1,char t2,char t,int n hanoi...

python處理漢諾塔問題

問題描述 請看上圖,要將a柱中的盤子移動到另一根柱子上。移動時要滿足以下兩個條件 問 如果有四個盤子需要移動幾次?num 0 用於計數 height 為盤子數量 defmovetower height,frompole,topole,withpole if height 1 movetower he...

漢諾塔的問題

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