1 条题解
-
0
初始化dp[0] = 1(和为0只有一种组合,即不选任何数)。
对于每个数字,从B向下更新到该数字的值,执行dp[j] += dp[j - a[i]]。
#include <iostream> #include <vector> using namespace std; int main() { int A, B; cin >> A >> B; vector<unsigned short> a(A); for (int i = 0; i < A; i++) { cin >> a[i]; } vector<int> dp(B + 1, 0); dp[0] = 1; for (int i = 0; i < A; i++) { for (int j = B; j >= a[i]; j--) { dp[j] += dp[j - a[i]]; } } cout << dp[B] << endl; return 0; }
信息
- ID
- 225
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者