第n个月的兔子可以分成4类,一类是成熟的兔子f(n-3),第二类是刚出生的兔子f(n-3),第三类是出生了一个月的兔子f(n-4),第四类是出生了两个月的兔子f(n-5)

#include<iostream>

using namespace std;
const int MAXN = 1e6+10;
long long mod = 1e9+7;
long long dp[MAXN]={0,1,1,1,2};
int main()
{
    int n;
    cin >> n;

    int t = 0;
    long long sum = 0;
    for(int i = 5 ; i <= n ; i++)
    {
        dp[i]+=dp[i-3];
        dp[i]%=mod;
        for(int j = i-3 ; j >= i-5 &&j>0 ; j--)
        {
            dp[i]+=dp[j];
            dp[i]%=mod;
        }
    }
    cout<<dp[n];
    return 0;
}