动态规划——递推 兔子和奶牛

递推

母牛每年生一只母牛,新出生的母牛成长三年后也能每年生一只
母牛,假设不会死。求N年后,母牛的数量。
进阶
如果每只母牛只能活10年,求N年后,母牛的数量。

public class Cow {

    public static int cowNumber1(int n) {//递归原型
        if (n < 1) {
            return 0;
        }
        if (n == 1 || n == 2 || n == 3) {
            return n;
        }
        return cowNumber1(n - 1) + cowNumber1(n - 3);
    }

    public static int cowNumber2(int n) {//动态规划改成的递推版本
        if (n < 1) {
            return 0;
        }
        if (n == 1 || n == 2 || n == 3) {
            return n;
        }
        int res = 3;
        int pre = 2;
        int prepre = 1;
        int tmp1 = 0;
        int tmp2 = 0;
        for (int i = 4; i <= n; i++) {
            tmp1 = res;
            tmp2 = pre;
            res = res + prepre;
            pre = tmp1;
            prepre = tmp2;
        }
        return res;
    }

    public static void main(String[] args) {
        int n = 20;
        System.out.println(cowNumber1(n));
        System.out.println(cowNumber2(n));
    }
    //进阶版本只要再原式上再减去f(10)
}

你可能感兴趣的:(常用算法,牛客网)