题目:
![](https://i-blog.csdnimg.cn/blog_migrate/bea0d782d7461129d07d86b20d2155ab.png)
代码(首刷自解 2024年2月28日):
#include<bits/stdc++.h>
using namespace std;
// 动态规划
int help(int n, int m) {
vector<int> nums(m+1, 0);
for (int i = 1; i <= m; ++i) {
nums[i] = i;
}
// dp + 初始化 todo: size n + 1
vector<int> dp(n + 1, 0);
dp[0] = 1;
// 遍历 先n 再 m1
for (int i = 0; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (i >= j) dp[i] += dp[i - nums[j]];
//cout << "dp["<<i<<"] = "<<dp[i]<<endl;
}
}
return dp[n];
// 递推公式:dp[i] += dp[i - nums[j]]
}
int main() {
int n,m;
cin>>n>>m;
int res = help(n, m);
cout<<res<<endl;
return 0;
}