zoukankan      html  css  js  c++  java
  • fafu 1001 dp(背包)

    View Code
    //fafu 1001 dp(背包)
    
    //题意是 n 个人花一定量的钱 在m道菜中各选一道菜(都选不同的)
    //要求选完后能够花尽量多的钱
    
    //这题其实就是背包问题,具体看代码
    
    #include <stdio.h>
    #include <string.h>
    
    #define N 1005
    #define M 55
    
    int n_pers, n_meal, money;
    int cost[M], dp[N], cnt[M];
    
    bool cmp(int a, int b)
    {
        if(a > b)
            return true;
        return false;
    }
    
    int main()
    {
        while(scanf("%d%d%d", &n_pers, &n_meal, &money) != EOF)
        {
            for(int i = 0; i < n_meal; ++i)
                scanf("%d", &cost[i]);
            //dp数组下标表示 花的钱数,值表示点几道菜
            memset(dp, -1, sizeof(dp));
            int ans = 0;
            dp[0] = 0;
            for(int i = 0; i < n_meal; ++i) //点第 i 道菜
            {
                for(int j = money; j >= cost[i]; --j)
                {
                    int index = j-cost[i];
                    if(dp[index] >= 0 && dp[index] + 1 <= n_pers)
                    {   //若之前有花 j-cost[i] 这么多,则 可以到达j 这一状态
                        //而且 j-cost[i] 这一状态所点的菜 再加上i 这道菜 不会超过总人数
                        if(dp[j] == -1 || dp[j] > dp[index] + 1 )
                        {
                            if(ans < j)
                                ans = j;    //记录最大花费
                            dp[j] = dp[index] + 1;
                        }
                    }
                }
            }
            printf("%d\n", ans);
        }
        return 0;
    }
  • 相关阅读:
    vue router 跳转动画
    less 循环
    在iconfont上批量下载图标
    function(h)
    三元表达式
    CSS3 object-fit 属性
    MaC 修改MySQL密码
    CSS3 animation 属性
    css控制文字超过2行不显示
    ionic动画
  • 原文地址:https://www.cnblogs.com/gabo/p/2458988.html
Copyright © 2011-2022 走看看