欢迎各位勇者来到力扣城,城内设有烹饪锅供勇者制作料理,为自己恢复状态。

勇者背包内共有编号为 0 ~ 4 的五种食材,其中 materials[j] 表示第 j 种食材的数量。通过这些食材可以制作若干料理,cookbooks[i][j] 表示制作第 i 种料理需要第 j 种食材的数量,而 attribute[i] = [x,y] 表示第 i 道料理的美味度 x 和饱腹感 y

在饱腹感不小于 limit 的情况下,请返回勇者可获得的最大美味度。如果无法满足饱腹感要求,则返回 -1

注意:

  • 每种料理只能制作一次。

示例 1:

输入:materials = [3,2,4,1,2]
cookbooks = [[1,1,0,1,2],[2,1,4,0,0],[3,2,4,1,0]]
attribute = [[3,2],[2,4],[7,6]]
limit = 5

输出:7

解释:
食材数量可以满足以下两种方案:
方案一:制作料理 0 和料理 1,可获得饱腹感 2+4、美味度 3+2
方案二:仅制作料理 2, 可饱腹感为 6、美味度为 7
因此在满足饱腹感的要求下,可获得最高美味度 7

示例 2:

输入:materials = [10,10,10,10,10]
cookbooks = [[1,1,1,1,1],[3,3,3,3,3],[10,10,10,10,10]]
attribute = [[5,5],[6,6],[10,10]]
limit = 1

输出:11

解释:通过制作料理 0 和 1,可满足饱腹感,并获得最高美味度 11

提示:

  • materials.length == 5
  • 1 <= cookbooks.length == attribute.length <= 8
  • cookbooks[i].length == 5
  • attribute[i].length == 2
  • 0 <= materials[i], cookbooks[i][j], attribute[i][j] <= 20
  • 1 <= limit <= 100

C++

class Solution {
public:void dfs(vector<int>& materials, vector<vector<int>>& cookbooks, vector<vector<int>>& attribute, int k) {if(k==cookbooks.size()) {return;}for(int i=k;i<cookbooks.size();i++) {satiety+=attribute[i][1];yummy+=attribute[i][0];int flag=0;for(int j=0;j<5;j++) {used[j]+=cookbooks[i][j];if(used[j]>materials[j]) {flag=1;}}if (flag == 0) {if (satiety >= limit) {isFull=1;res = max(res, yummy);}dfs(materials, cookbooks, attribute, i + 1);}for (int j = 0; j < 5; j++) {used[j] -= cookbooks[i][j];}satiety-=attribute[i][1];yummy-=attribute[i][0];}}int perfectMenu(vector<int>& materials, vector<vector<int>>& cookbooks, vector<vector<int>>& attribute, int limit) {used.resize(5);this->limit=limit;dfs(materials,cookbooks,attribute,0);if(isFull==0) {return -1;}return res;}
private:int satiety=0;int yummy=0;int isFull=0;std::vector<int> used;int limit;int res=0;
};

leetcode 烹饪料理相关推荐

  1. 【leetcode】LCP51. 烹饪料理

    [leetcode]LCP51. 烹饪料理 题目 思路 代码 题目 leetcode原题链接 欢迎各位勇者来到力扣城,城内设有烹饪锅供勇者制作料理,为自己恢复状态. 勇者背包内共有编号为 0 ~ 4 ...

  2. LeetCode 2022春季赛 2. 烹饪料理(状态枚举)

    文章目录 1. 题目 2. 解题 1. 题目 欢迎各位勇者来到力扣城,城内设有烹饪锅供勇者制作料理,为自己恢复状态. 勇者背包内共有编号为 0 ~ 4 的五种食材,其中 meterials[j] 表示 ...

  3. LeetCode LCP 51. 烹饪料理(状态枚举)

    文章目录 1. 题目 2. 解题 1. 题目 欢迎各位勇者来到力扣城,城内设有烹饪锅供勇者制作料理,为自己恢复状态. 勇者背包内共有编号为 0 ~ 4 的五种食材,其中 meterials[j] 表示 ...

  4. 漫画:什么是人工智能

    转载自 漫画:什么是人工智能 什么是人工智能? 人工智能(Artificial Intelligence),英文缩写为AI,它是研究.开发用于模拟和扩展人的智能的理论.方法.技术及应用系统的一门新的技 ...

  5. 万豪集团发布《重塑餐饮业:行业洞察》报告,分享十大新兴趋势

    后疫情时代的餐饮业将如何发展?面对这一空前的危机,虽然没有简单现成的解决方案,但万豪国际集团亚太区总部发布的<重塑餐饮业:行业洞察>报告提供了富有见地的观点,解析疫情对餐饮行业(尤其是亚洲 ...

  6. 从里面学到的关于过去的经验 前篇

    一个聋子看别人放炮仗.他就很奇怪:好好的一个花纸卷,怎么说散就散了? 数据科学家思维模型提醒你 注意一个区别:通过 直觉来进行决策,和通过 数据来进行决策的区别. 其实,假设你就是一个聪明的政府干部, ...

  7. 【案例】7-11介绍——鲜食店

    记录一篇文章的意义,可以继续搜索其他内容 http://blog.sina.com.cn/s/blog_6ad0d50a0100nj05.html 7-11(7-Eleven)便利店     (商标中 ...

  8. #前端常见算法的JS实现

    什么是前端工程师? 总而言之前端工程师就是运用HTML/CSS/JavaScript等Web技术,在工作中配合设计师实现用户界面,和后端工程师进行数据对接,完成Web应用开发的职位. 有关前端工程师 ...

  9. 面向非日本籍厨师的日本烹饪大赛:第六届日本料理世界挑战赛:冠军由Yoo Sung Yeub摘得

    来自于全球各地的6位厨师展开了日料终极对决 东京--(美国商业资讯)--日本农林水产省主办的日本烹饪赛事"日料世界挑战赛" (Washoku World Challenge) 决赛 ...

最新文章

  1. Python 中的魔术方法(双下划线开头和结尾的方法)
  2. 转结构体_golang处理gb2312转utf8编码的问题
  3. HTML+CSS+JavaScript复习笔记持更(十)——CSS3常用属性之定位
  4. 终止中台乱象 《2021年中国中台市场研究报告》隆重发布
  5. chrome查看md文件
  6. c语言传入的指针无返回值,c语言 关于指针注意事项
  7. 格式化输出的函数printf()用法
  8. Linux中路径的组成部分
  9. 计算机信息管理不会电脑,不要抱怨网速慢.只怪你不会调网速★让你的电脑一点都不卡...
  10. MATLAB(6)GUI应用介绍
  11. Html5开发的在线画板涂鸦,使用html5 canvas制作涂鸦画板
  12. centos7.6安装Kubernetes1.14.1集群
  13. 双十一健身运动装备有哪些值得买?运动好物推荐分享
  14. Hive on Hbase
  15. PaddlePaddle - 人脸关键点检测课程笔记
  16. php 参数与数字比较,PHP8中字符串与数字的比较更智能
  17. 今日头条推出“悟空问答” 做智能问答分发先驱者
  18. Qt--QMetaObject
  19. Linux内核TC工具链路带宽设计--CBQ队列规定
  20. 这些喜闻乐见的Java面试知识点,你都掌握了吗?

热门文章

  1. 一步步学习微软InfoPath2010和SP2010--第十一章节--创建批准流程(7)--approval节
  2. [LeetCode]390.消除游戏
  3. C++设计模式——原型模式(Prototype Pattern)
  4. 【财经期刊FM-Radio|2020年12月18日】
  5. 十五分钟让你了解Python套路
  6. 获取固有节假日的时间戳数组 (美国节假日)
  7. 记录:2022-9-30 打家劫舍 二叉搜索树中第K小的元素 公平锁 磁盘调度
  8. no remote repository
  9. Android studio 新版本查看R文件内容ID
  10. Mybatis——动态SQL foreach批量操作