我在地图数组中包含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
由可以应用优惠的ID
和respective quantity
组合而成。 Discount
是offerId
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。希望这有助于找到解决这个问题的方法
注意:我希望我能够正确解释我的要求。如果需要任何额外信息,请发表评论。感谢。