1. 程式人生 > >Hanoi雙塔問題(遞推)

Hanoi雙塔問題(遞推)


對於50%的資料, 1<=n<=25


對於100% 資料, 1<=n<=200


設法建立AnAn-1的遞推關係式。

題解

通過手推的方式可以發現轉移方程f[i]=2*f[i-1]+2,由於n<=200,所以要用高精

#include <iostream>    
#include <cstdio>    
using namespace std;    
int n,c,a[22],i,j;    
int main()    
{    
    cin>>n;    
    a[1]=2;                
    
for(i=2;i<=n;i++) { c=0; for(j=1;j<=20;j++) { a[j]=a[j]*2+c; if(j==1) a[j]+=2; c=a[j]/10000; a[j]%=10000; } } i
=20; while(i>1&&!a[i]) i--; cout<<a[i]; while(--i) printf("%04d",a[i]); cout<<endl; return 0; }