动态编程:最大化要购买的商品数量

时间:2015-12-12 03:22:41

标签: dynamic-programming

例如,对于某个产品,我们会列出您购买的产品数量以及您使用此产品数量支付的相应价格:

number = {1,5,8,12}

price = {0.5,2,3,3.6}  (即您为1个产品支付0.5,为5个产品支付2个等等)

现在我需要使用固定数量的美元来购买尽可能多的产品。如何使用动态编程来实现这一目标?

如果我想购买固定数量的产品,我理解如何最大限度地降低成本。但是对于固定金额的钱,我感到很困惑,因为价格是double型,我不能用价格索引数组来做到这一点。

1 个答案:

答案 0 :(得分:0)

对产品数量进行二进制搜索,然后使用固定数量的产品将成本降至最低。

我想也可以用贪婪来解决。将 pricePerProduct =价格[i] /数字[i] 价格[i] 数字[i] 存储在数组中并对数组进行排序。遍历数组。对于第一个索引,您可以购买楼层(剩余美元/价格[i])*数量[i] 的产品数量。剩余美元将更新为 floor(剩余美元/价格[i])*价格[i]