这题,简单的01背包问题。
下面的是AC的代码:
#include <iostream>
#include <cstring>
using namespace std;
int dp[13500];
int n, m;
class data
{
public:
int w, d;
};
data Data[3500];
int max(int x, int y)
{
return x > y ? x : y;
}
int main()
{
cin >> n >> m;
for(int i = 0; i < n; i++)
cin >> Data[i].w >> Data[i].d;
memset(dp, 0, sizeof(dp));
for(int j = 0; j < n; j++)
{
for(int k = m; k >= Data[j].w; k--)
dp[k] = max(dp[k], dp[k - Data[j].w] + Data[j].d);
}
cout << dp[m] << endl;
return 0;
}