裸完全背包问题。
C++ 代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
long long dp[3010]; //结果过大,使用long long 存储
int main(){
int n,m;
dp[0] = 1; //初始化
cin >> n >> m;
for(int i = 1; i <= n; i++){
int w;
cin >> w;
for(int j = w; j <= m; j++){
dp[j] += dp[j-w];
}
}
cout << dp[m];
return 0;
}