题目大意:

给出珠宝的重量Wi和珠宝的价值Di,并给定一个重量范围M,在不超过M的情况下求取到的珠宝的最大值,N为列出珠宝的重量。

 

 1 #include <iostream>
 2 #include<cmath>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int N ,M;
 9     cin>>N>>M;
10 
11     int *W = new int[N+1];
12     int *D = new int[N+1];
13 
14     W[0]=0;
15     D[0]=0;
16 
17     for(int i=1;i<=N;i++)
18     {
19         cin>>W[i]>>D[i];
20     }
21 
22     int *dp = new int[M+1];
23 
24     for(int i =0;i<=M;i++)
25     {
26         dp[i]=0;
27     }
28 
29     for(int i =1;i<=N;i++)
30     {
31         for(int j=M;j>=W[i];j--)
32         {
33 
34             dp[j]=max(dp[j] , dp[j-W[i]]+D[i]);
35         }
36     }
37 
38     cout<<dp[M]<<endl;
39 
40     return 0;
41 }
 posted on 2014-07-20 09:29  Love风吟  阅读(385)  评论(0编辑  收藏  举报