01背包问题ECNU2585
View Code
1 #include<stdio.h> 2 int wi[3420]={0},di[3420]={0},val[40000]={0};//di表示价值也就是各个物体的重量.val为目标。 3 int fmax(int i,int j) 4 { 5 if(i>j)return i; 6 else return j; 7 8 } 9 int main() 10 { 11 int max,n,i,j; 12 scanf("%d%d",&n,&max); 13 getchar(); 14 for(i=1;i<=n;i++) 15 scanf("%d%d",&wi[i],&di[i]); 16 for(i=1;i<=n;i++) 17 for(j=max;j>=0&&(j>=wi[i]);j--) 18 { 19 val[j]=fmax(val[j],val[j-wi[i]]+di[i]); 20 } 21 printf("%d\n",val[max]); 22 return 0; 23 }
keep moving...