在 Python 中查找最接近的甜点成本的程序
假设我们有两个名为baseCosts的数组,其中有n个项目,我们可以从中选择base和toppingCosts,其中有m个项目,我们可以选择toppings并有一个目标值。我们必须遵循这些规则来制作甜点。
必须正好有一个基地。
我们可以添加一种或多种配料,也可以完全不添加配料。
每种类型的浇头最多有两种。
这里baseCosts[i]代表第i个冰淇淋基料的价格。TopingCosts[i]表示第i个浇头之一的价格。目标值代表甜点的目标价格。我们必须制作一个总成本尽可能接近目标的甜点。我们必须找到最接近的甜点成本作为目标。如果有多个答案,返回较低的一个。
因此,如果输入类似于baseCosts=[2,8],toppingCosts=[4,5],target=12,那么输出将为12,因为我们可以以成本8取基数,然后以成本取第一个顶部的14,而且没有type2浇头,所以总成本8+4=12。
示例
让我们看看以下实现以获得更好的理解-
def solve(baseCosts, toppingCosts, target):
best_cost = baseCosts[0]
for b in range(len(baseCosts)):
bitmask = [0] * len(toppingCosts)
while True:
current_price = baseCosts[b]
for j in range(len(bitmask)):
current_price += bitmask[j] * toppingCosts[j]
if current_price - target == 0:
return target
elif abs(current_price - target) < abs(best_cost - target):
best_cost = current_price
elif abs(current_price - target) == abs(best_cost - target):
if current_price < best_cost:
best_cost = current_price
if 0 not in bitmask and 1 not in bitmask:
break
for i in range(len(bitmask)):
if bitmask[i] != 2:
bitmask[i] += 1
break
else:
bitmask[i] = 0
return best_cost
baseCosts = [2,8]
toppingCosts = [4,5]
target = 12
print(solve(baseCosts, toppingCosts, target))输入
[2,8], [4,5], 12输出结果
12
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下