原题地址:http://www.rqnoj.cn/problem/15
好久以前做的题了,是个背包问题,就不解释了。
1 #include<stdio.h> 2 #define MAX 100 3 int we[MAX],p[MAX]; 4 int ss[2000]; 5 int f(int w,int n) 6 { 7 int i,j; 8 for(j=0;j<2000;j++) 9 ss[j]=0; 10 for(i=1;i<n+1;i++) 11 for(j=w;j>0;j--) 12 { 13 if(we[i]<=j) 14 { 15 if(p[i]+ss[j-we[i]]>ss[j]) 16 ss[j]=p[i]+ss[j-we[i]]; 17 } 18 } 19 return ss[w]; 20 } 21 int main() 22 { 23 int n,w,i,j; 24 scanf("%d%d",&w,&n); 25 for(i=1;i<=n;i++) 26 scanf("%d%d",&we[i],&p[i]); 27 printf("%d ",f(w,n)); 28 29 return 0; 30 }