题目大意:
给出珠宝的重量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 }
原文地址:http://www.cnblogs.com/CSU3901130321/p/3855880.html