1. 程式人生 > >漢諾塔III 和 漢諾塔IV

漢諾塔III 和 漢諾塔IV

#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
long long  hannuo (int n)
{
    long long num;
    if (n == 1)
        return 2;
    else
        num = hannuo(n-1) * 3 + 2;
    return num;
}
int main()
{
    int n_, t;
    long long sum_;
    double sum;
    cin >> t;
    while (t--)
    {
        cin >> n_;
        sum_ = 0;
        if (n_ == 1)
        cout << 2 << endl;
        else if (n_ == 2)
        cout << 4 << endl;
        else
        {
            sum_ = 3 + ((hannuo(n_-2) * 3) / 2) + hannuo(n_-1) / 2;
            cout << sum_ << endl;
        }
    }
    return 0;
}

相關推薦

III IV

#include <iostream> #include <stdio.h> #include <cmath> using namespace std; long long  hannuo (int n) {     long long num;     if (n ==

HDU 2064 III HDU 2077 IV

題目: Description 約19世紀末,在歐州的商店中出售一種智力玩具,在一塊銅板上有三根杆,最左邊的杆上自上而下、由小到大順序串著由64個圓盤構成的塔。目的是將最左邊杆上的盤全部移到右

系列問題: II、IIIIVV、VI、VII

 漢諾塔II:(hdu1207) /先說漢若塔I(經典漢若塔問題),有三塔,A塔從小到大從上至下放有N個盤子,現在要搬到目標C上, 規則小的必需放在大的上面,每次搬一個,求最小步數。這個問題簡單,DP:a[n]=a[n-1]+1+a[n-1],先把上面的n-1個放在B上,把

系列問題: II、IIIIVV、VI

漢諾塔 漢諾塔II hdu1207: 先說漢若塔I(經典漢若塔問題),有三塔,A塔從小到大從上至下放有N個盤子,現在要搬到目標C上, 規則小的必需放在大的上面,每次搬一個,求最小步數。這個問題簡單,D

III

nbsp 漢諾塔 現在 允許 dai ace iii n) 全部 題目描述: 約19世紀末,在歐州的商店中出售一種智力玩具,在一塊銅板上有三根桿,最左邊的桿上自上而下、由小到大順序串著由64個圓盤構成的塔。目的是將最左邊桿上的盤全部移到右邊的桿上,條件是一次只能移動一個盤

2064 III 題解

由題意得: 1.與傳統的漢諾塔相比   多了一個限制——每次只能移動的相鄰的杆上 2.當“n”為“2”時,次數為“8”  從前三項的次數 “2  8  26”中不難得出推導公式   F[n]=3*F[n-1]+2 3.遞迴很耗時,容易超時,最好不用 4.程式碼如下

HDU 2064 III 題解

由題意得: 1.與傳統的漢諾塔相比   多了一個限制——每次只能移動的相鄰的杆上 2.當“n”為“2”時,次數為“8”  從前三項的次數 “2  8  26”中不難得出推導公式   F[n]=3*F[n-1]+2

常用演算法(一)——遞迴(斐波那契數列演算法)

1.遞迴定義 在一個方法(函式)的內部呼叫該方法(函式)本身的程式設計方式。 2.遞迴實現 (1)錯誤寫法:   遞迴最容易引發的一個異常是棧溢位異常。   如果一直遞迴,沒有結束條件,就會無限進行下去,引發棧溢位異常。 package cn.kimtia

2019.1.8兔子問題問題的解決程式碼

#兔子問題用遞迴法解決 def factorial(n): if n<1: print("輸入有誤,請返回重新輸入!") return -1 if n==1 or n==2: return 1 else: re

2019.1.8兔子問題問題的解決代碼

spa nbsp n-2 res ria while 漢諾塔問題 cto result #兔子問題用遞歸法解決 def factorial(n): if n<1: print("輸入有誤,請返回重新輸入!") return -

題目1458:III

約19世紀末,在歐州的商店中出售一種智力玩具,在一塊銅板上有三根杆,最左邊的杆上自上而下、由小到大順序串著由64個圓盤構成的塔。目的是將最左邊杆上的盤全部移到右邊的杆上,條件是一次只能移動一個盤,且不允許大盤放在小盤的上面。現在我們改變遊戲的玩法,不允許直接從最左(右)邊移到最右(左)邊(每次移動一定是移

HDU 2064 III (遞迴)

//題意自己看,不懂度娘#include <stdio.h> #include <algorithm> #include <math.h> #include <

【分治演算法】歸併排序,快速排序

1介紹 分治演算法已經是本人所寫的常用算法系列的第三個了,可能只會寫這一節,對比動態規劃與貪心演算法我們來認識一下分治演算法。 從思路上來看: (1)動態規劃:多階段過程轉化為一系列單階段問題,利用各階段之間的關係,逐個求解。每一個階段的最優解是基於前一個階段的最優解。

hdu 2064 III (水題)

漢諾塔III Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su

java中遞迴演算法

java中,一個方法呼叫它自身,被稱為方法遞迴。方法遞迴中包含了一種隱藏式的迴圈。它會重複執行某段程式碼,而且不需要迴圈語句控制。 例如有如下數學題。已知一個數列:f(0) =1 、f(1)=4、f(n+2) =2*f(n+1) + f(n),其中n是大於0的整數,求f(1

杭電2064 III

這是一道遞迴的題,無論N為幾,只要先把N=2的情況看明白就可以了。移動的情況是: 第N個:A->B->C; 第N-1個:A->B; 第N個:C->B->A; 第N-1個:B->C; 第N個:A->B->C; 於是乎遞迴的公式是

HDU 2064:III

漢諾塔III Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su

杭電 2064 III

Problem Description   約19世紀末,在歐州的商店中出售一種智力玩具,在一塊銅板上有三根杆,最左邊的杆上自上而下、由小到大順序串著由64個圓盤構成的塔。目的是將最左邊杆上的盤全部移到右邊的杆上,條件是一次只能移動一個盤,且不允許大盤放在小盤的上面。 現

(優秀演算法)對經典遞迴問題的理解與講解(部分引用大神程式碼,附連結。)

部落格大神的優秀漢諾塔程式碼:喜歡特別冷的冬天下著雪   (侵權聯絡) 本文只是在大神思路的基礎上加以理解。 [cpp] view plain copy  print? #include <stdio.h> //第一個塔為初始塔,中間的塔為借用塔,

F1巴西站密爾頓奪冠 維斯潘領跑套圈被撞

11月29日訊息,@北京商報從度小滿金融人士處獲悉,百度正式拿到准許經營證券期貨的許可證。據許可證顯示,機構名稱為北京百度百盈科技有限公司(下稱“百度百盈”),證券期貨業務經營範圍為基金銷售。而今年8月22日,根據北京證監局官網顯示,證監局已核准百度百盈證券投資基金銷售業務資格。 企查查資訊顯示,百度百盈成