1. 程式人生 > >HDU 2064 漢諾塔III 題解

HDU 2064 漢諾塔III 題解

由題意得:

1.與傳統的漢諾塔相比   多了一個限制——每次只能移動的相鄰的杆上

2.當“n”為“2”時,次數為“8”  從前三項的次數 “2  8  26”中不難得出推導公式   F[n]=3*F[n-1]+2

3.遞迴很耗時,容易超時,最好不用

4.程式碼如下:

#include<iostream>
using namespace std;

long long hanoi(int n)
{
    long long f[40];
    f[1]=2;
    for(int i=2; i<=35; i++)
        f[i]=3*f[i-1]+2;
    return f[n];
}

int main()
{
    int n,i;
    while(cin>>n)
        cout<<hanoi(n)<<endl;
    return 0;
}