思路:直接 DP解的,方式固定。
1 #include <iostream> 2 #include <stdio.h> 3 #include <cstring> 4 #include <string> 5 using namespace std; 6 7 int dp[100005]; 8 int coms[505]; 9 int value[505]; 10 int max(int a, int b){return a>b?a:b;} 11 12 int main() 13 { 14 //freopen("e:input.txt","r",stdin); 15 int n, m; 16 while(cin>>n >>m ) 17 { 18 for(int i=0; i<n; i++) 19 cin>>coms[i]>>value[i]; 20 21 memset(dp, 0, sizeof(dp)); 22 23 for(int i=0; i<n; i++) 24 for(int j=m-1; j>=coms[i]; j--) 25 dp[j] = max( dp[j], dp[j-coms[i]]+value[i] ); //对于每种奖品,有两种可能,1换 2不换 26 cout<<dp[m-1]<<endl; 27 } 28 return 0; 29 }
1038
时间: 2024-10-19 01:45:51