Stay Hungry,Stay Foolish!

D - Redistribution

D - Redistribution

https://atcoder.jp/contests/abc178/tasks/abc178_d

 

思路

设f[i]:表示用3~i数凑出和为i的方案数

f[i]=f[i-3]+f[i-4]+f[i-5]+…+f[i-i]

https://blog.csdn.net/qq_43690454/article/details/108579671

 

那么

f[i-1] = f[i-4] + f[i-5] + ... + f[i-i]

将此式带入第一个式子

 

得到递推公式

f[i]=f[i-3]+f[i-1]

Code

https://atcoder.jp/contests/abc178/submissions/39472254

#include <bits/stdc++.h>
using namespace std;
int dp[2005];
int main(){
  int n;
  cin>>n;
  dp[0]=1;
  dp[3]=1;
  for(int i=4;i<=n;i++){
      dp[i]=dp[i-1]+dp[i-3];
    dp[i]%=1000000007;
   }
   cout<<dp[n]<<endl;
 }

 

posted @ 2023-03-05 22:35  lightsong  阅读(15)  评论(0编辑  收藏  举报
Life Is Short, We Need Ship To Travel