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 }
posted @ 2012-04-26 23:51  xxx0624  阅读(192)  评论(0编辑  收藏  举报