题目描述:

https://leetcode-cn.com/problems/shopping-offers/

解题思路:

这类求最大最小的问题首先想到的就是用DP求解。

这题还用到了递归,首先计算单买商品,不购买大礼包的价格最为初始最小价值。

再利用循环计算包含每一个大礼包时的最小价值。需要递归计算的是,在购买了礼包A以后,剩余的需求量的最小价格。

其中需要注意的是不能超过需求量购买商品,所以对于每个礼包需要做一次判断,是否购买了该礼包后,超过了总需求。

代码:

class Solution {
public:
bool check(vector<int>bag, vector<int> needs)
{
for(int i=; i<needs.size(); i++)
{
if(needs[i]<bag[i])
{
return false;
}
}
return true;
} int shoppingOffers(vector<int>& price, vector<vector<int>>& special, vector<int>& needs) {
int min_price=;
for(int i=; i<price.size(); i++)
{
min_price += price[i]*needs[i];
} int j;
for(int i=; i<special.size(); i++)
{
vector<int> remain = needs;
if(check(special[i], remain))
{
for(j=; j<remain.size(); j++)
{
remain[j] = remain[j] - special[i][j];
}
int cur_price = special[i][j] + shoppingOffers(price, special, remain);
min_price = min(cur_price, min_price);
}
}
return min_price;
}
};

leetcode: 638.大礼包的更多相关文章

  1. Java实现 LeetCode 638 大礼包(阅读理解题,DFS)

    638. 大礼包 在LeetCode商店中, 有许多在售的物品. 然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品. 现给定每个物品的价格,每个大礼包包含物品的清单,以及待购物品清单.请输 ...

  2. Leetcode之深度优先搜索&回溯专题-638. 大礼包(Shopping Offers)

    Leetcode之深度优先搜索&回溯专题-638. 大礼包(Shopping Offers) 深度优先搜索的解题详细介绍,点击 在LeetCode商店中, 有许多在售的物品. 然而,也有一些大 ...

  3. LeetCode 638 Shopping Offers

    题目链接: LeetCode 638 Shopping Offers 题解 dynamic programing 需要用到进制转换来表示状态,或者可以直接用一个vector来保存状态. 代码 1.未优 ...

  4. Swift LeetCode 目录 | Catalog

    请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift    说明:题目中含有$符号则为付费题目. 如 ...

  5. C#LeetCode刷题-动态规划

    动态规划篇 # 题名 刷题 通过率 难度 5 最长回文子串   22.4% 中等 10 正则表达式匹配   18.8% 困难 32 最长有效括号   23.3% 困难 44 通配符匹配   17.7% ...

  6. LeetCode刷题总结-动态规划篇

    本文总结LeetCode上有动态规划的算法题,推荐刷题总数为54道.具体考点分析如下图: 1.中心扩展法 题号:132. 分割回文串 II,难度困难 2.背包问题 题号:140. 单词拆分 II,难度 ...

  7. leetcode动态规划题目总结

    Hello everyone, I am a Chinese noob programmer. I have practiced questions on leetcode.com for 2 yea ...

  8. 2019年7-8月Leetcode每日训练日志

    2019-08-29 #274 H指数 2019-08-28 #287 寻找重复数 #875 爱吃香蕉的珂珂 #704 二分查找 2019-08-27 #744 寻找比目标字母大的最小字母 #225 ...

  9. C#LeetCode刷题-深度优先搜索

    深度优先搜索篇 # 题名 刷题 通过率 难度 98 验证二叉搜索树   22.2% 中等 99 恢复二叉搜索树   45.1% 困难 100 相同的树   48.1% 简单 101 对称二叉树   4 ...

随机推荐

  1. Beta冲刺(2/5)(麻瓜制造者)

    今日完成任务 邓弘立:继续完成了昨天未完成的登录接口的重编码与测试. 李佳铭|:进一步完善了收藏UI 江郑: 对使用前端框架页面元素的进一步优化,基本功能进行中 刘双玉:部分图书馆租借接口修改 肖小强 ...

  2. web自动化-窗口句柄及位置变化

    在进行web自动化时,很容易会遇到多窗口进行切换测试,下面就对多窗口的一些句柄和切换及窗口句柄顺序简单总结一下 from selenium import webdriver driver = webd ...

  3. Postgresql 截取字符串

    截取字符串一般用 substring 就够用了.对于有些长度不定的就没法用这个函数了,但还是有规律的,可以某个字符分割. 如:(这是一个url,截取最后一部分.现在要取 - 后面部分内容) 8a59e ...

  4. Windows安装PostgreSQL11.1

    Windows安装PostgreSQL11.1 安装过程如下: 1.下载安装包postgresql-11.1-1-windows-x64.exe 2.点击下一步 3.选择安装位置,默认路径C:\Pro ...

  5. python流程控制语句-if语句

    一个if语句 if语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ),也就是只有一个if判断,当为真的时候就运行一块语句,否则就不运行 下面代码中的if语句控制者缩进的pri ...

  6. Spring 注解大全

    @Autowired 自动注入 (存在多个可注入Bean时,通过 @Qualifier 指定)@Resource 与@Autowired作用相同@Repository 只能标注在 DAO 类上.该注解 ...

  7. 转载 jQuery和js自定义函数和文件的方法(全网最全)

    jQuery和js自定义函数和文件的方法(全网最全)    版权声明:本文为像雾像雨又像风_http://blog.csdn.net/topdandan的原创文章,未经允许不得转载. https:// ...

  8. 配置Linux下vim自动缩进等功能

    从终端打开配置文件: vim ~/.vimrc 添加如下代码: set tabstop=4 set softtabstop=4 set shiftwidth=4 set autoindent set ...

  9. Linux kernel Programming - Concurrency and Race Conditions

    Concurrency and Its Management Race condition can often lead to system crashes, memory leak,corrupte ...

  10. this computer meets the requirements for HAXM,but intel Virtualization Technology (VT-x) is not turned on

    this computer meets the requirements for HAXM,but intel Virtualization Technology (VT-x) is not turn ...