首页 > 其他 > 详细

背包(采药)

时间:2014-11-24 00:39:41      阅读:328      评论:0      收藏:0      [点我收藏+]

有n件物品和一个容量为c的背包。第i件物品的重量是w[i],价值是 v[i]。求解将哪些物品装入背包可使这些物品的重量和不超过背包容量,且价值总和最大。输出总价值。

Sample Input

130 10

54 68

4 58

85 67

1 6

35 64

84 57

7 98

57 75

36 96

72 5

 

70 3

71 100

69 1

1 2

Sample Onput

333

3

 

bubuko.com,布布扣
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<cstdlib>
 6 using namespace std;
 7 int g[100][1000];
 8 int main()
 9 {
10     int c,n;
11     while(~scanf("%d%d",&c,&n))
12     {
13         int i,j,w,v;
14         scanf("%d%d",&w,&v);
15         for(i=1;i<=w;i++)
16         g[1][i]=0;
17         for(i=w;i<=c;i++)
18         g[1][i]=v;
19         for(i=2;i<=n;i++)
20         {
21             scanf("%d%d",&w,&v);
22             for(j=1;j<=c;j++)
23             {
24                 if(j<w)
25                 g[i][j]=g[i-1][j];
26                 else
27                 g[i][j]=max(g[i-1][j-w]+v,g[i-1][j]);
28             }
29         }
30         printf("%d\n",g[n][c]);
31     }
32     return 0;
33 }
View Code

 

背包(采药)

原文:http://www.cnblogs.com/xuesen1995/p/4117688.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!