G. 背包问题
典型的01背包问题。
Code:
#include <bits/stdc++.h>
#define IO ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
using namespace std;
typedef long long ll;
int n, W;
int w[110], p[110];
int dp[10010];
int main()
{
IO;
cin >> n >> W;
for (int i = 0; i < n; i++)
{
cin >> w[i] >> p[i];
}
for (int i = 0; i < n; i++)
{
for (int j = W; j >= w[i]; j--)
{
dp[j] = max(dp[j - w[i]] + p[i], dp[j]);
}
}
cout << dp[W];
return 0;
}