hdu 2064 2077 汉诺塔递推公式
果断最近想要刷一些题目,所有现在开始对汉诺塔的拓展版感兴趣,hdu上面有很多对于汉诺塔的不同版本,感觉上还是蛮不错的题目,但是实际上来说,有些我自己还是没有理解的很深,希望以后能够想的更加透彻。
2064,题意就是现在不准直接从最右边的柱子直接拿盘子到最左边的,当然从左边到右边也不行,那么对于每一次那就又要多做n次的工作量,所以按照旧的汉诺塔算次数的公式就变成了3^N-1。
View Code
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 __int64 f[36]; 6 for(int i=1;i<=20;i++) 7 { 8 f[i]=1; 9 for(int j=1;j<=i-1;j++) 10 { 11 f[i]*=3; 12 } 13 f[i]++; 14 } 15 int n,t; 16 scanf("%d",&t); 17 while(t--) 18 { 19 scanf("%d",&n); 20 printf("%I64d\n",f[n]); 21 } 22 return 0; 23 }