#include<iostream>
#include<cstring>
using namespace std;
int max(int a,int b)
{
return a=a>b? a:b;
}
int main()
{
int n,v,i,j,dp[1003],c,w;
while(cin>>n>>v && (n || v)){
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++){
cin>>c>>w;
for(j=v;j>=c;j--)
dp[j]=max(dp[j],dp[j-c]+w);
}
cout<<dp[v]<<endl;
//for(i=0;i<=v;i++)
//cout<<dp[i]<<" ";
}
return 0;
}
总结:简单01背包(01背包小讲),跟开心的小明一样。