根据约束找到最佳商品组合的算法

时间:2016-10-04 07:56:52

标签: algorithm language-agnostic

我在地图数组中包含ID和相应数量的项目,其中id为第一个元素,quantity为第二个元素。

[100 : 1, 300 : 2, 400:2, 600 : 2, 700 : 1]。我有输入数据:

 1 quantity of `100`
 2 quantity of `300`
 2 quantity of `400`
 2 quantity of `600`
 1 quantity of `700`

现在我已经存储了如下数据。每行都有一个offerId。 map of Id and quantity由可以应用优惠的IDrespective quantity组合而成。 DiscountofferId

的值
offerId | map of Id and quantity           | Discount
o1      | [100 : 2]                        | 45
o2      | [100 : 1, 300 : 2, 400 : 2]      | 100
o3      | [300 : 1]                        | 55
o4      | [600 : 1]                        | 30
o5      | [600 : 1, 700 : 1]               | 20

现在我必须选择所有offerIds给我最好的ID组合,即最大总折扣,数量

例如,在上述情况中:可能的结果可能是:

P = [o1,o3,o4,05]最大折扣为150(45 + 55 + 30 + 20)。 (注意:P应该有不同的商品ID,即相同的商品不能两次申请)

o1 applied on 2 quantity of `100`
o3 applied on 1 quantity of `300`
o4 applied on 1 quantity of `600`
o5 applied on 1 quantity of `600` and 1 quantity of `700`

o4已应用于1个数量的600.应用o4后600的提醒数量为1(如输入中我们传递的数量为600的2个数量) 。因此o5也可以适用。

我需要一个算法/代码来帮助我识别combination of offerIds哪个会给maximum discount,考虑到每个ID都有一个数量`。

注意我之前在没有考虑数量的情况下问了类似的问题:Algorithm to get best combination。希望这有助于找到解决这个问题的方法

注意:我希望我能够正确解释我的要求。如果需要任何额外信息,请发表评论。感谢。

0 个答案:

没有答案