状态表示: 从前i个物品选, 和为M的方案数
状态属性: count
状态属性: 选i 、 不选i
#include <iostream>
using namespace std;
const int N = 1010;
int f[N];
int a[N];
int n, m;
int main() {
cin >> n >> m;
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
f[0] = 1;
for (int i = 0; i < n; ++i) {
for (int j = m; j >= a[j]; --j) {
f[j] += f[j-a[i]];
}
}
cout << f[m] << endl;
return 0;
}