zoukankan      html  css  js  c++  java
  • HDOJ2569 ( 彼岸 ) 【递推公式】

     

    f1=3
    f2=9
    f3=21
    f4=51
    猜测f(n)=2*f(n-1)+f(n-2)
    在纸上打草稿写出f3的情况,然后推出f4的情况(在f3后边加*2或*3就成)
    f3    f4    f3  f4    f3  f4
    111*3    222*3   333*3
    112*2    221*2   331*2
    113*2    223*2   332*2
    121*2    212*2   313*2
    131*2    232*2   323*2
    211*3    122*3   133*3
    311*3    322*3   233*3
    有两种思路(实质是一样的):
    思路1:f4=2*f3+?(仔细观察:?代表的就是*3的个数,而他们的共同特点就是末两位数字相同。去掉他们的最后一位,观察)
    11 12 13
    21 22 23
    31 32 33
    这不正是f2的情况吗?好,为什么呢?考虑下,f3末尾两位数字相同的情况是怎么来的?不就是把f2的末尾数字重复一遍吗。
    那么,为什么不是3*f2呢?因为前边的2*f3中已经包含了2/3的3*f2了。所以只需再加1个f2就足够了。
    即f(n)=2f(n-1)+f(n-2):
    思路2:f4=3*f3 -?(仔细观察:?代表的就是*2的个数,而他们的共同特点就是末两位数字不同)
    Problem : 2569 ( 彼岸 )     Judge Status : Accepted
    RunId : 5936964    Language : C    Author :
    qq1203456195
    Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
    #include <stdio.h>
    int main()
    {
        int cas,n,i;
        int seq[50];
        seq[1]=3;
        seq[2]=9;
        seq[3]=21;
        for (i=4;i<41;i++)
            seq[i]=(seq[i-1]<<1)+seq[i-2];
        scanf("%d",&cas);
        while(cas--)
        {
            scanf("%d",&n);
            printf("%d\n",seq[n]);
        }
        return 0;
    }
    
    字节跳动内推

    找我内推: 字节跳动各种岗位
    作者: ZH奶酪(张贺)
    邮箱: cheesezh@qq.com
    出处: http://www.cnblogs.com/CheeseZH/
    * 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    bootstrap-datetimepicker使用记录
    Highcharts使用====一些问题记录
    值类型 引用类型
    java 发送邮件
    包括post,get请求(http,https)的HttpClientUtils
    整理的java的日期DateUtil
    oracle随机取数据
    oracle查询表的索引
    有关dwr推送的笔记
    java 超经漂亮验证码
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/2497881.html
Copyright © 2011-2022 走看看