(动态规划)母牛生小牛问题
2015-04-26 10:38
351 查看
题目:
一头刚出生的小母牛,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 ; }
相关文章推荐
- 关于c++中的一个母牛生小牛的问题详细解答与体会
- DP 动态规划 Problem M 1013 母牛问题
- 母牛生小牛的问题
- 【小题目】母牛产小牛问题
- 递归-斐波那契(母牛生小牛问题)
- 利用面向对象解母牛生小牛问题
- HDU_2018——母牛产小牛的问题,递推
- 利用面向对象解母牛生小牛问题
- 母牛生小牛问题
- 动态规划解决矩阵连乘问题
- 63. Unique Paths II 动态规划的问题
- 算法分析与设计实验二(关于动态规划问题)
- 动态规划经典问题--TSP问题
- 动态规划中的导弹拦截问题
- LCS问题——动态规划
- 常考经典算法---动态规划(拼凑面额、背包问题)
- 算法java实现--动态规划--0-1背包问题
- 动态规划解决01背包问题
- 换11元钱问题,动态规划问题
- 动态规划:HDU-2955-0-1背包问题:Robberies