zoukankan      html  css  js  c++  java
  • 饮食问题

    Bessie 正在减肥,所以她规定每天不能吃超过 C (10 <= C <= 35,000)卡路里的食物。农民 John 在戏弄她,在她面前放了B (1 <= B <= 21) 捅食物。每桶内都有某个单位卡路里(范围:1..35,000)的食物(不一定相同)。Bessie 没有自控能力,一旦她开始吃一个桶中的食物,她就一定把这桶食物全部吃完。

    Bessie 对于组合数学不大在行。请确定一个最优组合,使得可以得到最多的卡路里,并且总量不超过C。

    例如,总量上限是40卡路里, 6 桶食物分别含有7, 13, 17, 19, 29, 和 31卡路里的食物。Bessie可以吃7 + 31 = 38卡路里,但是可以获取得更多: 7 + 13 + 19 = 39卡路里。没有更好的组合了。

    输入格式

    共两行。

    第一行,两个用空格分开的整数: C 和 B

    第二行,B个用空格分开的整数,分别表示每桶中食物所含的卡路里。

    输出格式

    共一行,一个整数,表示Bessie能获得的最大卡路里,使她不违反减肥的规则。 

    样例输入

    40 6
    7 13 17 19 29 31

    样例输出

    39

    最简单背包

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<string.h>
    #include<math.h>
    #include<map>
    #define inf 10000000
    using namespace std;
    int main()
    {
        int c,n,dp[36000];
        scanf("%d%d",&c,&n);
        memset(dp,0,sizeof(dp));
        int a;
        for(int i=1;i<=n;i++){
            scanf("%d",&a);
            for(int j=c;j>=a;j--)
            {
                if(dp[j]<dp[j-a]+a)
                    dp[j]=dp[j-a]+a;
            }
        }
        printf("%d
    ",dp[c]);
        return 0;
    }


    想的太多,做的太少。
  • 相关阅读:
    Chrome开发者工具中Elements(元素)断点的用途
    最简单的SAP云平台开发教程
    Java实现 LeetCode 495 提莫攻击
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 492 构造矩形
  • 原文地址:https://www.cnblogs.com/pealicx/p/6115655.html
Copyright © 2011-2022 走看看