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   }

 

 

posted @ 2012-09-01 21:37  诺小J  阅读(420)  评论(0编辑  收藏  举报