题目描述
有一只兔子,从出生后第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 }