http://poj.org/problem?id=3624
One-dimensional array of 01 backpack, V must be inverted enumeration, otherwise it will be placed the same item multiple times.
Charm Bracelet
Time Limit: 1000MS |
|
Memory Limit: 65536K |
Total Submissions: 24456 |
|
Accepted: 11031 |
Description
Bessie have 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 from theN(1≤N≤3,402) Available charms. Each charm  i in the supplied List has a weight  Wi ( 1≤  Wi ≤400), a ' Desirability ' Factor  Di (1≤  Di ≤100), And can is used at the most once. Bessie can only support a charm bracelet whose weight are no more than  M Span class= "Apple-converted-space" > (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 MA Ximum possible sum of ratings.
Input
* Line 1:two space-separated integers: N and M * Lines 2.. N+1:line i+1 describes charm i with the space-separated integers: Wi and Di
Output
* Line 1: A single integer which is the greatest sum of charm desirabilities so can be achieved given the weight Constrai Nts
Sample Input
4 61 42 63 122 7
Sample Output
23
#include <iostream>#include<cstring>#include<cstdio>using namespacestd;intC,n;intv[3412],w[3412],f[12888];voidbackpack () {memset (f),0,sizeof(f)); inti,j; for(i=1; i<=n;i++) for(j=c;j>=0; j--) if(j>=V[i]) f[j]=max (f[j],f[j-v[i]]+W[i]); printf ("%d\n", F[c]);}intMain () {inti; scanf ("%d%d",&n,&c); for(i=1; i<=n;i++) scanf ("%d%d",&v[i],&W[i]); Backpack (); return 0;}
POJ 3624 Charm Bracelet