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; }
出处:http://www.cnblogs.com/lightsong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。