首页 > 其他 > 详细

HDU 2064汉诺塔变形(1)

时间:2014-02-20 23:45:06      阅读:529      评论:0      收藏:0      [点我收藏+]

问题描述:在汉诺塔的规则上附加一条不能从左直接移到右或者从右移动到左,求操作数。

 

由于不能直接用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[n]=f[n-1]*3+2;

bubuko.com,布布扣
#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[n]);
    }
    return 0;
}
bubuko.com,布布扣

HDU 2064汉诺塔变形(1)

原文:http://www.cnblogs.com/zhen94/p/3557382.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!