POJ3624

题目大意:

给出珠宝的重量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 }

你可能感兴趣的:(poj)