题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2077
这个题跟汉诺塔III的思路是一样的 只是分最后一步就行
贴一下我的汉诺塔III的解题链接 http://blog.csdn.net/x_xueting/article/details/76264947
在第5步是将n-1个盘子从A-->B-->C,那么这个题就是在n-1个盘子从A-->B上时先不急着移动到C先将第n个盘子移动到B上,
因为这个题允许最大的盘子放到最上面,所以是没错的,然后再将第n个盘子从B移到C 再将n-1个盘子移到C上 所以移动的步数X=a[n-1]+2
a[n-1]是n-1个盘子从A-->B-->C的步数 2是第n个盘子从A-->B再从B移到C的步数 ,那n-1个盘子从A-->B-->C的步数的分析就是汉诺塔III的分析(a[n]=3*a[n-1]+2)
贴上代码:
#include <stdio.h>
int main()
{
int n,i,t;
__int64 a[21];
a[0]=0;
a[1]=2;
for(i=2;i<=20;i++)
{
a[i]=3*a[i-1]+2;
}
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%I64d\n",a[n-1]+2);
}
return 0;
}