题目描述
有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
本题有多组数据。
动态规划
每个月的兔子数量为dp[i]dp[i]=dp[i-1]+dp[i-2] 其中i>=3
兔子=上个月的+新出生
由于第三个月才能开始生育,新出生的兔子取决于两个月前兔子的数量
#include<iostream>
#include<vector>
using namespace std;
int main(){
int month;
while(cin>>month){
if(month==1||month==2)
{cout<<1<<endl;continue;}
vector<int> dp(month+1,0);
dp[1]=1;
dp[2]=1;
for(int i=3;i<=month;i++){
dp[i]=dp[i-1]+dp[i-2];//i-1是上个月的,i-2的满足生育能力的(第三个月)
}
cout<<dp[month]<<endl;
}
//1 1 2 3 5 8 13 21 34
}
京公网安备 11010502036488号