您的位置:首页 > 其它

HDU 2064汉诺塔变形(1)

2014-02-20 12:19 232 查看
问题描述:在汉诺塔的规则上附加一条不能从左直接移到右或者从右移动到左,求操作数。

由于不能直接用A柱到C柱,所以第n个盘子只能A->B->C,所以前n-1个盘子要移到C让路(nth A->B),再移到A让路(nth B->C),最后前n-1个盘子移到C完成操作。

移动策略:

1)前n-1个盘子A->C

2)第n个盘子A->B

3)前n-1个盘子C->A

4)第n个盘子B->C

5)前n-1个盘子A->C

得出递推公式:f
=f[n-1]*3+2;

#include<stdio.h>

int main()
{
long long f[36];
int i,n;
for(i=2,f[1]=2;i<36;i++)
{
f[i]=f[i-1]*3+2;
}
while(scanf("%d",&n))
{
printf("%d\n",f
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: