【发布时间】:2014-12-04 18:20:34
【问题描述】:
我正在寻找合适的算法来解决以下问题:
给定一组 N 个产品:
{ (p1, q1), (p2, q2), ...., (pN, qN)}
pj 是产品名称,qj 是数量,大于零 (j = 1..N)。那是一个购物车的模型。
给出了 M 组折扣规则:
{ B1(qp1, qp2, ..., qpN) -> V1
B2(qp1, qp2, ..., qpN) -> V2
BM(qp1, qp2, ..., qpN) -> VM }
规则 Bk “消耗” p1 的 qp1 个片段,p2 的 qp2 个片段,...以产生值 Vk,(k=1..M)。该模型捆绑和折扣价值。
我需要找到使用给定产品集最大化 V 总和的规则组合。 规则可以多次使用。
示例:
假设购物车包含一台电视、两部手机和两台蓝光:(tv, 1), (mp, 2), (br, 2)。
假设有三个捆绑包:
- 买两间房,立减5元。
- 买一台电视和一台mp,10美元。
- 买一台电视和一台BR,20美元。
算法应返回 (tv, 1), (br, 1),因为该组合是使购物车中产品的价值 (20$) 最大化的组合。
如果规则是:
- 买两间房,立减15元
- 买一台电视和一台mp,10美元。
- 买一电视一奶,立减 20 美元。
该算法应返回 (br, 2), (tv, 1), (mp, 1),因为该值将是 25$。
【问题讨论】:
标签: algorithm bundle cart shopping