zoukankan      html  css  js  c++  java
  • (动态规划)母牛生小牛问题

    题目:

    一头刚出生的小母牛,4年后生一头小母牛,以后每年生一头,现有一头刚出生的小母牛,问20年后共有多少头牛?

    思路:

    列举前n年的情况:1、1、1、2、3、4、6、8、11。。。

    将规律抽象成公式:

    F(1)=1

    F(2)=1

    F(3)=1

    F(n)=F(n-1)+F(n-3)  

    F(n):表示第n年共有多少头牛

    F(n-1):表示第n-1年共有多少头牛

    F(n-3):表示第(n-3)年出生的母牛在第n年生的小母牛数

    解法:

    从公式F(n)=F(n-1)+F(n-3) 来看,可以采用两种方法:

    1、简单的递归实现(自上而下,适用于小规模的计算,否则大量的函数递归将导致栈溢出)

    2、动态规划(自下而上,开辟空间保存每一步的结果,适用于大规模计算)

    编程实现:

    // recursive method
    int NumOfCow(int n){
        if(n<=3)
            return 1;
        return NumOfCow(n-1)+NumOfCow(n-3);
    }
    // dynamic programming method
    int NumOfCow2(int n){
        int num[n+1];
        for(int i=1;i<=n;i++){
            if(i<=3)
                num[i]=1;
            else
                num[i]=num[i-1]+num[i-3];
        }
        return num[n];
    }
  • 相关阅读:
    JavaIO学习:字符流
    Java学习:IO流
    Java中的Filter过滤器
    Java学习:File类中的过滤器接口
    Java学习:File类
    Java学习:递归
    多线程简介(全)
    Java学习:Lambda表达式
    Java学习:线程池
    Java学习:线程间通信
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4457411.html
Copyright © 2011-2022 走看看