Problem description
Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she 'd like to fill it with the best charms possible fromN(1 ≤N≤ 3,402) Available charms. Each charmIIn the supplied list has a weightWi(1 ≤Wi≤ 400), a 'inclurability 'factorDi(1 ≤Di≤ 100), and can be used at most once. Bessie can only support a charm bracelet whose weight is no moreM(1 ≤M≤ 12,880 ).
Given that weight limit as a constraint and a list of the charms with their weights and desirability rating, deduce the maximum possible sum of ratings.
Input
* Line 1: two space-separated integers:NAndM
* Lines 2 ..N+ 1: LineI+ 1 describes charmIWith two space-separated integers:WiAndDi
Output
* Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraints
Sample Input
4 61 42 63 122 7
Sample output
23
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;int dp[40000], w[40000], v[40000];int n, t, m;int main(){ while (cin >> n >> m) { memset(dp,0,sizeof(dp)); for (int i = 1; i <=n; i++) { cin >> v[i] >> w[i]; } for (int i = 1; i <=n; i++) for (int j = m; j >= v[i]; j--) dp[j] = max(dp[j], dp[j - v[i]] + w[i]); cout<<dp[m]<<endl; } return 0;}