码迷,mamicode.com
首页 > 其他好文 > 详细

(DP)51NOD 1085 背包问题

时间:2018-09-22 10:32:22      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:bsp   sizeof   efi   背包问题   取出   ++   max   color   scan   

在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\n", dp[w]);
21     }
22 }

 

(DP)51NOD 1085 背包问题

标签:bsp   sizeof   efi   背包问题   取出   ++   max   color   scan   

原文地址:https://www.cnblogs.com/Ekalos-blog/p/9689036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!