题目大意
假设农场中成熟的母牛每年都会生 1 头小母牛,并且永远不会死。第一年有 1 只小母牛,从第二年开始,母牛开始生小母牛。每只小母牛 3 年之后成熟又可以生小母牛。给定整数 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];
}
版权声明:本文为m0_52675592原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。