漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著 64
片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。
現在蒜頭君開始玩漢諾塔遊戲, 他放了 n
片**圓盤在第一根柱子上,從上到下依次編號為 1-n
, 1號圓盤最小,n
號圓盤最大。蒜頭君移動第 i
號圓盤的時候需要花費 i
點體力。現在蒜頭君想把圓盤全部移動到底 2
根柱子上,移動過程中蒜頭君必須準守遊戲規則。
現在蒜頭君想知道他完成遊戲的最小移動次數和最少消耗的體力。
輸入乙個正整數 n(1— 60)(1
≤n≤6
0)表示**圓盤的個數
一行輸出 2
2 個數,表示最小移動次數和最小消耗的體力,中間用乙個空格隔開。
樣例輸入1
2
樣例輸出1
3 4
樣例輸入2
3
樣例輸出2
7 11
不難分析出:當有n層盤子時 第乙個也就是最上面的盤子會總共移動2^(n-1)次 第二個盤子會移動 2^(n-2)次 第n個盤子移動2^(n-n)=1次 所以可以用等比公式計算出總的步數為 2^n-1次
分析到這裡 **實現表不在困難
第一遍的**:
#include using namespace std;
long long ans=0,power=0;
int main()
int main()
int main(){
long long n;
mypower();
cin>>n;
ans=value[n]-1;
for(long long i=1;i<=n;i++)
power+=(i*value[n-i]);
cout<
計蒜客 漢諾塔
漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著 64 片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。現在蒜頭君開...
計蒜客 漢諾塔 Python
漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著 6464 片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤,如圖所示...
漢諾塔的移動函式
漢諾塔 的移動 用python編寫 move n,a,b,c 函式,接收引數n,n表示3個柱子a b c中第1個柱子a的盤子數量,列印出把所有盤子從a借助b移動到c的方法 期待輸出 a c a b c b a c b a b c a c move 3,a b c 把不是最下面的盤子都經過c移到b 把...