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

uva 10465 Homer Simpson (完全背包)

时间:2015-03-21 09:55:28      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:完全背包   dp   acm   uva   c语言   

uva 10465 Homer Simpson

题目大意:有两种汉堡,给出吃每种汉堡的时间,以及总时间。求出在充分利用时间的前提下,能吃的最多的汉堡数量。当无法利用所有时间时,再在汉堡数量后面输出剩余的时间。

解题思路:完全背包。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
typedef long long ll;
using namespace std;
ll dp[20005];
int main() {
    int num[2], sum;    
    while (scanf("%d %d %d", &num[0], &num[1], &sum) == 3) {
        memset(dp, 0, sizeof(dp));
        dp[0] = 1;
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j <= sum; j++) {
                if (dp[j] && dp[j + num[i]] < dp[j] + 1) {
                    dp[j + num[i]] = dp[j] + 1;
                }
            }
        }
        int cnt = 0;
        while (!dp[sum]) {
            sum--;
            cnt++;
        }
        printf("%lld", dp[sum] - 1);
        if (cnt) printf(" %d", cnt);
        printf("\n");
    }
    return 0;
}

uva 10465 Homer Simpson (完全背包)

标签:完全背包   dp   acm   uva   c语言   

原文地址:http://blog.csdn.net/llx523113241/article/details/44497449

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