Hdu Bone Collector (Backpack)
Two-digit array practices;
# Include
# Include
# Define M 1009 typedef struct pack {int cost; int val;} PACK; int f [M] [M];
# Include
# Include
# Define M 1009 typedef struct pack {int cost; int val ;}pack; int main () {int cas, n, v, I, j; int f [M]; PACK a [M]; scanf ("% d", & cas); while (cas --) {scanf ("% d", & n, & v ); memset (f, 0, sizeof (f); for (I = 1; I <= n; I ++) scanf ("% d", & a [I]. val); for (I = 1; I <= n; I ++) scanf ("% d", & a [I]. cost); for (I = 1; I <= n; I ++) for (j = v; j> = a [I]. cost; j --) if (f [j]
Int main () {int cas, n, v, I, j; PACK a [M]; scanf ("% d", & cas); while (cas --) {scanf ("% d", & n, & v); memset (f, 0, sizeof (f); for (I = 1; I <= n; I ++) scanf ("% d", & a [I]. val); for (I = 1; I <= n; I ++) scanf ("% d", & a [I]. cost); for (I = 1; I <= n; I ++) for (j = 0; j <= v; j ++) if (j-a [I]. cost> = 0 & f [I-1] [j] <f [I-1] [j-a [I]. cost] + a [I]. val) f [I] [j] = f [I-1] [j-a [I]. cost] + a [I]. val; else f [I] [j] = f [I-1] [j]; printf ("% d \ n", f [n] [v]);} return 0 ;}
One-digit array: