码迷,mamicode.com
首页 > 编程语言 > 详细

(算法)母牛生小牛问题

时间:2015-04-26 12:16:25      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

题目:

一头刚出生的小母牛,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];
}

(算法)母牛生小牛问题

标签:

原文地址:http://www.cnblogs.com/AndyJee/p/4457411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!