动态规划之母牛生产
题目:
假设农场中成熟的母牛每年会生产一头小母牛,并且永远不会死,第一年有一只小母牛,从第二年开始,母牛开始生小母牛。每只小母牛3年后成熟又可以生小母牛。给定整数N,求N年后N的数量;
思路:
利用动态规划,建立动态方程第i年的母牛数量等于第i-1年的母牛数加上三年前的,母牛数,因为三年前的小牛今年都会生产一头小牛,每年生一个,所以动态方程为:
dp[i] = dp[i-1] + dp[i-3];
代码实现:
public int cowNums(int n){
int [] dp = new int [n+1];
if(n<=3){
return n;
};
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
dp[3] = 3;
for(int i = 4; i< = n; i++){
dp[i] = dp[i-1] + dp[i-3];
}
return dp[n];
}