首页 > 代码库 > POJ3624

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 }