标签:bsp sizeof efi 背包问题 取出 ++ max color scan
第1行,2个整数,N和W中间用空格隔开。N为物品的数量,W为背包的容量。(1 <= N <= 100,1 <= W <= 10000) 第2 - N + 1行,每行2个整数,Wi和Pi,分别是物品的体积和物品的价值。(1 <= Wi, Pi <= 10000)
输出可以容纳的最大价值。
3 6 2 5 3 8 4 9
14
解:
1 #include <stdio.h> 2 3 #define MAX(a,b) (a > b ? a : b) 4 #define CLR(x) memset(x,0,sizeof x) 5 6 int dp[10005]; 7 8 int main() 9 { 10 int n, w; 11 while (scanf_s("%d%d", &n, &w) != EOF) 12 { 13 CLR(dp); 14 for (int i = 0; i < n; i++) 15 { 16 int wi, pi; 17 scanf_s("%d%d", &wi, &pi); 18 for (int j = w; j >= wi; j--) dp[j] = MAX(dp[j], dp[j - wi] + pi); 19 } 20 printf("%d\n", dp[w]); 21 } 22 }
标签:bsp sizeof efi 背包问题 取出 ++ max color scan
原文地址:https://www.cnblogs.com/Ekalos-blog/p/9689036.html