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;
}

猜你喜欢

转载自blog.csdn.net/aptx4869971/article/details/82822500
今日推荐