LeetCode每日一题:1774. 最接近目标价格的甜点成本 深搜+剪枝 / 动态规划
创始人
2024-03-22 14:08:06
0

题目:力扣

你打算做甜点,现在需要购买配料。目前共有 n 种冰激凌基料和 m 种配料可供选购。而制作甜点需要遵循以下几条规则:

必须选择 一种 冰激凌基料。
可以添加 一种或多种 配料,也可以不添加任何配料。
每种类型的配料 最多两份 。
给你以下三个输入:

baseCosts ,一个长度为 n 的整数数组,其中每个 baseCosts[i] 表示第 i 种冰激凌基料的价格。
toppingCosts,一个长度为 m 的整数数组,其中每个 toppingCosts[i] 表示 一份 第 i 种冰激凌配料的价格。
target ,一个整数,表示你制作甜点的目标价格。
你希望自己做的甜点总成本尽可能接近目标价格 target 。

返回最接近 target 的甜点成本。如果有多种方案,返回 成本相对较低 的一种。

示例 1:

输入:baseCosts = [1,7], toppingCosts = [3,4], target = 10
输出:10
解释:考虑下面的方案组合(所有下标均从 0 开始):
- 选择 1 号基料:成本 7
- 选择 1 份 0 号配料:成本 1 x 3 = 3
- 选择 0 份 1 号配料:成本 0 x 4 = 0
总成本:7 + 3 + 0 = 10 。

示例 2:

输入:baseCosts = [2,3], toppingCosts = [4,5,100], target = 18
输出:17
解释:考虑下面的方案组合(所有下标均从 0 开始):
- 选择 1 号基料:成本 3
- 选择 1 份 0 号配料:成本 1 x 4 = 4
- 选择 2 份 1 号配料:成本 2 x 5 = 10
- 选择 0 份 2 号配料:成本 0 x 100 = 0
总成本:3 + 4 + 10 + 0 = 17 。不存在总成本为 18 的甜点制作方案。

示例 3:

输入:baseCosts = [3,10], toppingCosts = [2,5], target = 9
输出:8
解释:可以制作总成本为 8 和 10 的甜点。返回 8 ,因为这是成本更低的方案。

示例 4:

输入:baseCosts = [10], toppingCosts = [1], target = 1
输出:10
解释:注意,你可以选择不添加任何配料,但你必须选择一种基料。

提示:

n == baseCosts.length
m == toppingCosts.length
1 <= n, m <= 10
1 <= baseCosts[i], toppingCosts[i] <= 104
1 <= target <= 10^4

深搜:

class Solution {
public:int res = 1e5;int suitable(int a , int b , int target){ //选出 a b 哪个成本更合适int re;if( abs(a-target) < abs(b-target)){re = a;}else if( abs(a-target) > abs(b-target) )re = b;else re = min(a , b);return re ;}void dfs(int money ,vector& toppingCosts ,vector costime ,int target,int idx){if(money > target){//当前成本高于预算成本 不需要再增加了 剪枝res = suitable(money , res , target); return ;}else if(money == target) { //当前成本等于预算成本 最好的结果 剪枝res = target; return ;}res = suitable(money , res , target); //挑选当前成本与已存在的成本价哪个更适合for(int i = idx ; i < toppingCosts.size() ; i++){if(costime[i] < 2) { //每个配料只能用最多两次costime[i]++;dfs(money+toppingCosts[i],toppingCosts ,costime, target,i);// costime[i]--; // 加不加都行 不影响程序}}}int closestCost(vector& baseCosts, vector& toppingCosts, int target) {for(int i = 0 ; i < baseCosts.size() ; i++ ){ //分别以两种基料开始搜索 获得最合适的成本vector costime(toppingCosts.size(),0);dfs(baseCosts[i],toppingCosts ,costime, target,0); }return res ;}
};

相关内容

热门资讯

爱回收、同城帮二手回收乱象:砍... 出品|搜狐科技 作者|郑松毅 编辑|杨锦 家里放着淘汰的旧手机,想卖掉回血却怕踩坑?不少人都抱着“能...
青海五年完成省级地方性法规和规... 中新网西宁12月27日电(祁增蓓)26日,记者从“‘十四五’发展成就”系列主题新闻发布会青海省司法厅...
新《海商法》中海上货物运输制度... 开栏寄语 《中华人民共和国海商法》完成全面修订并正式实施,这标志着我国海事法治建设进入新阶段,为加快...
2025年读书笔记(上):《乔... 小崔律师认为书单与歌单一样,实际上是非常私人化的内容,只有选择而无好坏之分,所谓的推荐其实只是对20...
原创 政... 忍无可忍的食堂承包商的一纸实名举报,撕开了河南省周口市淮阳人民中学从餐费中强行超高抽成,从学生口中夺...
小学女教师和校长的“窗帘纠纷”... 近日,关于一名女教师向校长申请安装窗帘遭到拒绝的事件,有了最新进展。 根据报道,该女教师所在的班级...
年度盘点丨十大关键词,看楼市政... 获取最新政策解读报告 ☞ 戳这里,加入地产/物业/投拓/产城 展望2026年,稳楼市的主基调延续,...
原创 韩... 韩国这回跟日本杠上了,不仅起诉了“靖国神社”,还要求日本政府赔钱,高市早苗的麻烦事儿,可真是一桩接着...
甘肃省镇原县人民法院:“小额诉... “法院拿出的一揽子方案,既考虑了我们企业的实际情况,也兼顾双方的合法权益,我们还愿继续合作!” 日前...
甘肃省民乐县人民法院诉讼服务中... “不到十分钟就完成了从咨询到立案的全部流程!”近日,一企业办事人员在法院干警的指导下,通过涉企绿色通...