1 //典型01背包。因为没置0还wa一次。。。。。。。 2 #include<cstdio> 3 #include<cstring> 4 int v,d[1005]; 5 6 void bag(int c,int w) 7 { 8 for(int i=v; i>=c; --i) 9 if(d[i-c] + w > d[i]) 10 d[i] = d[i-c] + w; 11 } 12 13 int main() 14 { 15 int n,c,w; 16 while(~scanf("%d%d",&n,&v) && n+v != 0) 17 { 18 memset(d,0,sizeof d); 19 while(n--) 20 { 21 scanf("%d%d",&c,&w); 22 bag(c,w); 23 } 24 printf("%d ",d[v]); 25 } 26 return 0; 27 }