每种菜可以吃无限多
#include <bits/stdc++.h>
using namespace std;
const int N=100010;
long long f[N];
int v[N],w[N];//体积是卡路里,价值是幸福度
int main(){
int n;
while(cin>>n){//有多个测试样例
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){//n件物品
cin>>w[i]>>v[i];//a为幸福值,b为卡路里
}
int m;//背包体积
cin>>m;
for(int i=1;i<=n;i++)//完全背包
for(int j=v[i];j<=m;j++)
f[j]=max(f[j],f[j-v[i]]+w[i]);
cout<<f[m]<<endl;
}
return 0;
}