题目:https://codeforces.com/problemset/problem/431/C
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
typedef long long ll;
ll mod = 1e9 + 7;
ll da[105];
ll db[105];
void solve()
{
da[0] = 1;//dynamic plan must have initial value
ll n, k, d;
scanf_s("%lld%lld%lld", &n, &k, &d);
for (int i = 1; i <= n; i++)//对应的权值
{
for (int j = 1; j <= i && j <= k; j++)
{
db[i] += db[i - j];//表示满足条件的
db[i] %= mod;
if (j >= d)
{
db[i] += da[i - j];
db[i] %= mod;
}
else
{
da[i] += da[i - j];
da[i] %= mod;
}
}
}
cout << db[n] << endl;
}
int main()
{
solve();
}
最后
以上就是敏感身影最近收集整理的关于dp简单计数的全部内容,更多相关dp简单计数内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复