首页 > 其他 > 详细

【HDOJ】2546 饭卡

时间:2014-05-26 04:41:12      阅读:341      评论:0      收藏:0      [点我收藏+]

01背包,需要先对数据升序排序。这样保证优先购买最贵的东西,才满足背包条件。

bubuko.com,布布扣
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 
 5 #define MAXNUM 1005
 6 
 7 int prices[MAXNUM];
 8 int dp[MAXNUM];
 9 
10 int mymax(int a, int b) {
11     return a>b ? a:b;
12 }
13 
14 int comp(const void *a, const void *b) {
15     return *(int *)b - *(int *)a;
16 }
17 
18 int main() {
19     int n, m;
20     int i, j, tmp;
21 
22     while (scanf("%d", &n)!=EOF && n) {
23         for (i=1; i<=n; ++i) {
24             scanf("%d", &prices[i]);
25         }
26 
27         scanf("%d", &m);
28 
29         if (m < 5) {
30             printf("%d\n", m);
31             continue;
32         }
33 
34         qsort(prices+1, n, sizeof(int), comp);
35         memset(dp, 0, sizeof(dp));
36 
37         for (i=1; i<=n; ++i) {
38             for (j=m; j>=5; --j) {
39                 tmp = j - prices[i];
40                 if (tmp >= 5) {
41                     dp[j] = mymax(dp[tmp]+prices[i], dp[j]);
42                 } else {
43                     dp[j] = mymax(prices[i], dp[j]);
44                 }
45             }
46         }
47 
48         printf("%d\n", m-dp[m]);
49     }
50 
51     return 0;
52 }
bubuko.com,布布扣

 

【HDOJ】2546 饭卡,布布扣,bubuko.com

【HDOJ】2546 饭卡

原文:http://www.cnblogs.com/bombe1013/p/3749286.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!