母牛生小牛

原文鏈接:https://sgeekioi.github.io/2019/07/17/NumOfCow/

母牛生小牛

題目
假設農場中成熟的母牛每年只會生1頭小母牛,並且永遠不會死。第一年農場只有一隻成熟的母牛,從第二年開始,母牛開始生小母牛。每隻小母牛3年成熟後又可以生小母牛。給定整數N,求出N年後牛的數量。

【解答】
所有的牛都不會死,所以第N-1年的牛會毫無損失的活到第N年。同時所有成熟的牛都會生1頭小牛,那麼成熟的牛數量如何估計?就是第N-3年的所有牛,到第N年肯定是成熟的牛,期間出生的牛肯定沒有成熟。所以C(n) = C(n-1)+C(n-3),初始項C(1)==1,C(2)==2,C(3)==3。這個和斐波那契數列數列十分相似,只不過C(n)依賴C(n-1)和C(n-3)的值

方法一 O(2N)

public int c1(int n) {
        if (n < 1)
            return 0;
        if (n == 1 || n == 2 || n == 3)
            return n;
        return c1(n - 1) + c1(n - 3);
    }

方法 O(N)

public int c2(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 0;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章