力扣每日一题:最接近目标价格的甜点成【dfs 暴力搜索】
admin
2024-04-16 22:04:50
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 <= 104

分析:题目给出了两个数组baseCosts和toppingCosts 。 toppingCosts表示配料的价格,baseCosts表示基料的价格。做冰激凌我们必须选择一种基料,但是配料的话,我们可以每种可以选择0,1,2份,然后我们要做的成本尽可能的接近target。

我们定义一个变量res 表示最接近的成本,s表示中间变量,那么每种配料有三种状态,s,s+=toppingCosts[i]*1 ,s+=toppingCosts[i]*2 ;1<=n,m<=10 ,复杂度也就是100,那么我们就可以直接dfs搜索了,对每一种基料搜索,搭配配料,然后找到最接近target的,

(res==-1|| abs(s-target)< abs(res-target)||(abs(s-target)==abs(res-target) && s

AC代码:


import static java.lang.Math.abs;
class Solution {int res = -1 ;public static void main(String[] args) {}public int closestCost(int[] baseCosts, int[] toppingCosts, int target) {for (int baseCost : baseCosts) {dfs(baseCosts,target,0 , baseCost);}return  res  ;}/*** * @param c 表示配料的价格数组* @param target 目标成本价* @param k 指向c 的下标* @param s 临时变量,记录成本*/public void dfs(int [] c , int target , int k , int s ){if (k==c.length){if (res==-1|| abs(s-target)< abs(res-target)||(abs(s-target)==abs(res-target) && s

相关内容

热门资讯

长鑫科技站上3万亿市值,A股“... 长鑫科技正式上市,与市场预期相近,长鑫科技上市首日遭到了资金的炒作。上市首日,长鑫科技股价大涨465...
国家能源集团煤炭经营分公司原董... 近日,中央纪委国家监委驻国家能源集团纪检监察组、北京市纪委监委发布官方通报,国家能源集团煤炭经营分公...
1300万血本无归!海鲜集市火... 总第4685期作者 |餐饮老板内参 王盼顶流“朱富贵”开放外卖背后有什么深意?最近,福州知名的海鲜火...
刚刚,逆市拉升!多只个股直线涨... 银行、食品饮料等板块逆市走高!今日(7月28日)盘中,银行、地产、食品饮料、酒店餐饮等板块逆市拉升。...
从静态支撑到高承托动态适配,清... 2026年7月27日,清闲智能创新(深圳)有限公司(以下简称:清闲智能)正式推出全新动态人机工学椅 ...
中环大案!26岁,入职6个月,... 7月27日消息,近期关于中环金融圈的惊天大案持续刷屏,7月21日晚间,港媒爆出中环环球大厦有员工报案...
东野圭吾因结肠癌去世,“老年癌... 本文来源:时代周报 作者:林昀肖日本作家东野圭吾于当地时间7月23日因结肠癌去世,终年68岁。东野圭...
中品数字生态:回归消费本质,为... 随着消费市场的不断升级,大众的消费需求也在发生变化,从单纯追求商品的功能性,转向追求更好的消费体验、...
一次性抛售135家公司!锦浪科... 面对持续低迷的行业大环境,逆变器巨头锦浪科技悄然上演了一场“骨折”大甩卖。不久前,锦浪科技披露公告,...
“稀缺性溢价”消失,智谱能重返... 在毛利越打越薄、C端始终缺位的情况下,押注B端的智谱,恐怕很难打造出一条真正属于自己的护城河。最近,...