我是一个产品经理,现在有个工作中的问题想请教一下:
假设系统支持A、B、C、D、E多种类型的活动(比如满减优惠、限时折扣、会员优惠……)。 每个活动有自己的限制条件(比如门槛金额、商品类型、时间……) 不同的活动可以分别设置该活动优惠和其他活动优惠是否可以叠加。
比如:
- A优惠可以和C、D、E优惠叠加;
- B优惠可以和A、B、C优惠叠加;
- C优惠可以和B、D优惠叠加;
- D优惠可以和A、C、E优惠叠加;
- E优惠可以和ABCD优惠叠加;
当一笔订单同时满足多个活动的条件时(极端情况是满足所有活动的条件),那么该笔订单可以有很多种不同的优惠组合,比如:
- ADE
- BC
- CD ……
实际的情况还会更复杂。因为每一类活动下都可能有多个活动(比如A类活动,可能有A1,A2,A3,A4……等十几个互斥规则不一样的活动)。有什么好的算法,可以快速的找出一笔订单可能的优惠组合,并选出最优的优惠组合呢?