题目描述
P1164 小A点菜
解法:0-1背包问题
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
vector<int> a(101, 0);
vector<int> dp(10001, 0);
for(int i=1;i<=n;i++) cin >> a[i];
dp[0] = 1;
for(int i=1;i<=n;i++)
for(int j=m;j>=a[i];j--)
dp[j] = dp[j]+dp[j-a[i]];
cout << dp[m];
return 0;
}