这道题明显就是个01背包。所以直接套模板就好啦。
#include<bits/stdc++.h>
#define MAXN 30000
using namespace std;
int f[MAXN],w[MAXN],c[MAXN],n,v;
int main(){
scanf("%d%d",&n,&v);
for(int i=;i<=n;i++)
scanf("%d%d",&w[i],&c[i]);
for(int i=;i<=n;i++)
for(int j=v;j>=w[i];j--)
f[j]=max(f[j],f[j-w[i]]+c[i]);
printf("%d\n",f[v]);
return ;
}