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 }

你可能感兴趣的:(问题)