lam_dyr
2025-01-07 19:59:09
曾经刚学 dp 时做的题现在能交题解了,写篇纪念一下吧。
给定
设
但是如何判断这是道 dp 题呢?算法标签。
但是你打比赛的时候是没有算法标签的,所以在这讲一下如何判断 dp 。
无后效性
综上,本题适合用动态规划解决。
考虑如何转移。
对于第
因此,当计算
细节:
#include <iostream>
#include <algorithm>
using namespace std;
const int MOD=1000007;
int dp[105][105];
int n,m;
int a[105];
int main() {
cin>>n>>m;
for(int i=1;i<=n;++i)
cin>>a[i];
dp[0][0]=1;
for(int i=1;i<=n;++i){
for(int j=0;j<=m;++j){
for(int k=0;k<=min(a[i],j);++k)
dp[i][j]=(dp[i][j]+dp[i-1][j-k])%MOD;
}
}
cout<<dp[n][m];
return 0;
}
写题解不易,点个赞再走呗~