首页 > 其他 > 详细

hdu 1995汉诺塔V 递推

时间:2014-03-02 04:58:49      阅读:425      评论:0      收藏:0      [点我收藏+]

经典汉诺塔系列的题。先回忆一下普通汉诺塔的解决方法:

(1)将A上n-1个盘子借助C座线移到B座上;

(2)把A座上剩下的一个盘移到C座上;

(3)将n-1个盘从B座借助于A座移到C座上。

 

本题求:n阶汉诺塔,上数第k个盘子的移动次数

分析:第K个盘子的移动与第k个盘子上的盘子移动无关,所以问题转换为n-k+1阶汉诺塔中第一个盘子的移动次数。

然后看上述三个步骤中,(2)中第K个盘子未移动,所以递推公式为:f(n) = 2 * f(n-1)

由于问题已经转化成n-k+1阶汉诺塔,故所求通项f[n]=2^(n-k)。

bubuko.com,布布扣
#include<stdio.h> 
#include<math.h> 
int main() 
{
    int c,n,k; 
    scanf("%d",&c); 
    while(c--) 
    { 
        scanf("%d %d",&n,&k); 
        printf("%I64d\n",(__int64)pow(2,n-k)); 
    } 
    return 0; 
} 
bubuko.com,布布扣

hdu 1995汉诺塔V 递推,布布扣,bubuko.com

hdu 1995汉诺塔V 递推

原文:http://www.cnblogs.com/xtaq/p/3575058.html

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