这道题也可以转换为动态规划写
#include<bits/stdc++.h> #define endl '\n' using namespace std; int recur(int n){ if(n==0){ return 0; } if(n==1||n==2){ return 1; } int dp[n+1]; dp[0]=0; dp[1]=1; dp[2]=1; for(int i =3;i<=n;i++){ dp[i]=dp[i-3]+2*dp[i-2]+dp[i-1]; } return dp[n];
}
int main(){ int n; cin>>n; int m= recur(n-1); cout<<m;
return 0;
}