今天刚学的01背包,套模板就可以解决这道题。
#include<iostream>
using namespace std;
int n,m,f[13000],w[3410],v[3410];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
scanf("%d %d",&w[i],&v[i]);
for(int i=1;i<=n;i++)
for(int j=m;j>=w[i];j--)
{
f[j]=max(f[j],f[j-w[i]]+v[i]);
}
cout<<f[m]<<endl;
return 0;
}