思路
纯01背包
代码
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=20000;
int f[N];
int n,m;
int w[N],d[N];
int main(){
while(cin >> n >> m){
for(int i=0;i<n;i++)cin >> w[i] >> d[i];
for(int i=0;i<n;i++){
for(int j=m;j>=w[i];j--){
f[j]=max(f[j],f[j-w[i]]+d[i]);
}
}
cout << f[m] << "\n";
}
}