zoukankan      html  css  js  c++  java
  • 统计每个月兔子总数

    题目描述

    有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?

    输入:

    9

    输出:

    34

    分析

      1月大 2月大 3月大
    一月 1 0 0
    二月 0 1 0
    三月 1 0 1
    四月 1 1 1
    五月 2 1 2
    六月 3 2 3
    七月 5 3 5
    八月 8 5 8
    九月 13 8 13
    十月 21 13 21
    十一月 34 21 34
    十二月 55 34 55

    规律:  简单递推

    f(月份,1月大) = f(月份,3月大) =  f(月份-1,2月大) +  f(月份-1,3月大)

    f(月份,2月大) = f(月份-1, 1月大)

    <?
    //递推使用
    function getNum( $month )
    {
        $oneCount = 1;
        $twoCount = 0;
        $threeCount = 0;
    
        $start = 1;
        while ($start < $month)
        {
            $tmp = $oneCount;
            $oneCount = $twoCount + $threeCount;
            $twoCount = $tmp;
            $threeCount = $oneCount;
            $start++;
        }
        return $oneCount+$twoCount+$threeCount;
    }
    
    function main()
    {
        while ($month = fgets(STDIN))
        {
    
            $num = getNum(intval($month));
            print $num."
    ";
        }
    }
    
    main();
    

      

    优化:如果以每个月兔子数量为基础,可以发现兔子总数符合斐波拉契数列的规律  

  • 相关阅读:
    swift中? ! weak unowned以及动态时语言理解
    线程状态---Day24
    线程安全---Day23
    线程---Day22
    异常---Day21(写得有错请指出,感谢)
    Java之路---Day18(List集合)
    Java之路---Day17(数据结构)
    Java之路---Day16(泛型)
    Hoeffding不等式证明
    事件绑定之.bind()
  • 原文地址:https://www.cnblogs.com/cing123/p/9892516.html
Copyright © 2011-2022 走看看