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

【HDOJ】2546 饭卡

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

标签:style   class   blog   c   code   java   

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 饭卡

标签:style   class   blog   c   code   java   

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

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