638. Shopping Offers

来源:互联网 发布:百知尚行 编辑:程序博客网 时间:2024/06/06 01:47

题目

这里写图片描述

这里写图片描述

题意

不同的商品i有不同需求needs[i]
有些特价组合special[],对应每一种商品i有相应的数量,买相应的数量就可以用组合价(但是有一些组合未必会比单买便宜)
求恰好买够需求needs[]的的最低总价.

分析

用动态规划+DFS
每一次调用遍历一次组合special[i], 看剩余的需求里面能不能用组合i的方式购买,如果可以,则使用组合i,并且减去相应的need的数量,剩余的数量再调用一次递归, 然后继续循环

实现

class Solution {public:    bool checkvalid(vector<int>& needs, const vector<int>& special) {        for (int j = 0; j < needs.size(); ++j) {                if (needs[j]-special[j] < 0) {                    return false;                }        }        return true;    }    int shoppingOffers(vector<int>& price, vector<vector<int>>& special, vector<int>& needs) {        int minPrice = 0;        for (int i = 0; i < needs.size(); ++i) {            minPrice += needs[i]*price[i];        }        for (int i = 0; i < special.size(); ++i) {            if (checkvalid(needs, special[i])) {                vector<int> curNeeds;                for (int j = 0; j < needs.size(); ++j) {                    curNeeds.push_back(needs[j]-special[i][j]);                }                int tempPrice = shoppingOffers(price, special, curNeeds)+special[i].back();                minPrice = min(minPrice, tempPrice);            }        }        return minPrice;    }};
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 花生糖粘牙怎么办 玉米生腻虫怎么办 交管12123登不上怎么办 卡车排气管堵怎么办 汽车排气管进水怎么办 被排气管烫伤怎么办 小车排气管进水怎么办 泥沙状肾结石怎么办 泥沙样肾结石怎么办 有肾小结石怎么办 肾部泥沙怎么办 石棉纤维痒怎么办 酸铜麻点怎么办 电磁阀打不开怎么办 电动车电机抱死怎么办 编码器反转怎么办 电机温度高怎么办 摩托车后轮抱死怎么办 电动车后轮抱死怎么办 电瓶车后轮抱死怎么办 汽车减震器触底怎么办 新车有个小坑怎么办 汽车顶有个小坑怎么办 脚弓塌陷怎么办 不依法办事怎么办 steam被墙怎么办 成都小黄车员工怎么办 宝宝喉炎怎么办 宝宝喉炎发烧怎么办 电视机无信号怎么办 陕西省图书馆怎么办卡 如家怎么办会员 铁路职工家属证怎么办 猪得了流感怎么办 坐高铁错过时间怎么办 错过高铁票怎么办 专车未来接站怎么办 换乘来不及买票怎么办 公积金集中封存怎么办 南京禁区通行证怎么办 12306订餐没收到怎么办