zoukankan      html  css  js  c++  java
  • HDU-2077-汉诺塔IV

    题目链接

    http://acm.hdu.edu.cn/showproblem.php?pid=2077

    这题就我个人认为比较难,做了很久,递推关系式一直找不出正确的来,找很多递推关系,提交了很多次,全都WA,我甚至怀疑,是不是题目数据错了,

    应为我的递推关系做出的答案比题目的步数少,,后来在网上看了看,还是没有完全弄明白,没完全弄明白,

    网上的解释

    如果有n个盘子,则需要前n-1个挪到中间的盘子上,然后最大的盘子挪到最右面,需要两步,把前(n-1)个盘子从左边挪到中间是和从中间挪到右边需要相同的次数。而a数组中存放的就是那个前n-1个盘子挪动到相同位置需要的次数。结果即为a[i-1]*2+2。
    所以我直接想成了是f[n]=2*f[n-1]+2,结果错了。【因为是需要n-1个盘子前进一步】


    而求a数组需要用到递推。公式为第i个为前n-1个移动次数的三倍加一,简化到两个盘子,小的先移动两次到最右边,大的移到中间,然后小的在移回中间,小的移动了三次,而大的移动了一次,就使他们全部挪动了一个位置

    代码

    #include<stdio.h>

    int main(void)
    {
    int a[30]={0,1};
    int i,t,n;
    for(i=2;i<=20;i++)
    a[i]=3*a[i-1]+1;
    scanf("%d",&t);
    while(t--)
    {
    scanf("%d",&n);
    printf("%d ",2*a[n-1]+2);
    }
    return 0;
    }

    参数
    0MS 252K 254 B

  • 相关阅读:
    施密特触发器
    51单片机独立键盘原理
    51单片机独立键盘原理
    hdu3085 Nightmare Ⅱ
    hdu3085 Nightmare Ⅱ
    复制一颗二叉树
    复制一颗二叉树
    判断一颗二叉树是不是完全二叉树
    判断一颗二叉树是不是完全二叉树
    求二叉树的深度及每一个节点的深度
  • 原文地址:https://www.cnblogs.com/liudehao/p/4115504.html
Copyright © 2011-2022 走看看