完全背包问题
(dp) $O(n * m)$
时间复杂度
n * m
C++ 代码
// 感觉就是个完全背包问题
#include <iostream>
using namespace std;
const int N = 30;
const int M = 10010;
int v, m;
int f[N];
long long dp[M];
int main()
{
cin >> v >> m;
for(int i = 1; i <= v; i ++)
cin >> f[i];
dp[0] = 1;
for(int i = 1; i <= v; i ++)
for(int j = f[i]; j <= m; j ++)
dp[j] += dp[j-f[i]];
cout << dp[m];
return 0;
}