(DP)51NOD 1085 背包问题

Posted ekalos-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(DP)51NOD 1085 背包问题相关的知识,希望对你有一定的参考价值。

在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。
Input
第1行,2个整数,N和W中间用空格隔开。N为物品的数量,W为背包的容量。(1 <= N <= 100,1 <= W <= 10000)
第2 - N + 1行,每行2个整数,Wi和Pi,分别是物品的体积和物品的价值。(1 <= Wi, Pi <= 10000)
Output
输出可以容纳的最大价值。
Input示例
3 6
2 5
3 8
4 9
Output示例
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
", dp[w]);
21     }
22 }

 


以上是关于(DP)51NOD 1085 背包问题的主要内容,如果未能解决你的问题,请参考以下文章

51Nod 1085 背包问题 (01背包)

51nod 1085 背包问题

51nod1085-----01背包

51Nod 1085 01背包

模板51Nod--1085 01背包

1085 背包问题(0-1背包模板题)