hdu-2018 母牛的故事(遞推)

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2018
題意是牛分爲母牛和小母牛,目標是求出每年的總母牛數(母牛+小母牛)。

分析:

由輸入輸出樣例來看,第1年只有一頭母牛,並且沒有生下牛,第二年年初生下一頭牛。
由遞推關係看,第n年的母牛數f(n)由兩部分組成:
1.原有母牛的數量:由於沒有死亡,去年是母牛(包含了所有小母牛,就算今年成年,也包括在內),今年仍然是母牛,則第n-1年的母牛數爲f(n-1).
2.今年新出生母牛的數量:今年出生的母牛一定是由之前是母牛和剛剛今年成年的母牛生下的,那麼數量爲f(n-3)

所以f(n)=f(n-1)+f(n-3)

解決:

因此得到完整遞推公式:f(1)=f(2)=f(3)=n(0

拓展:

question:如果要得到第n年的小母牛數量,應該怎麼做?

代碼:

#include <stdio.h>  

// 遞推式 f(n) = n n<=4,f(n) = f(n-1) + f(n-3) n>4  
int cow(int n)  
{  
    if(n <= 4)  
        return n;  
    else  
        return cow(n-1) + cow(n-3);  
}  

int main(void)  
{  
    int n;  

    while(scanf("%d", &n) != EOF) {  
        // 判定結束條件  
        if(n == 0)  
            break;  

        // 計算並輸出結果  
        printf("%d\n", cow(n));  
    }  

    return 0;  
}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章