#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { int n,v,c[1003],w[1003]; int dp[1003]; //滚动数组 dp数组表示重量为i时价值为多少。。 while(scanf("%d%d",&n,&v),(n||v)) { memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) { scanf("%d%d",c+i,w+i); } for(int i=0;i<n;i++) { for(int j=v;j>=c[i];j--) dp[j]=max(dp[j],dp[j-c[i]]+w[i]); } printf("%d\n",dp[v]); } return 0; }
时间: 2024-10-24 13:44:33