如何求解优惠券的最优解,优惠券有同类互斥和非同类互斥
问题是这样的:
背景:我们的订单在创建时,需要默认给出一个用户的优惠券最优组合。
规则:
1·优惠券是基于优惠券模板创建的,相同的优惠券模板创建的优惠券是同类,否则是不同类
2·优惠券有同类可叠加和同类不可叠加两种属性
3·优惠券有满足指定订单金额 或者 指定范围的商品数量加起来满足指定数量 才能使用的规则
求:
用户可能有N个优惠券,这优惠券类型随机,可叠加属性都是随机的。
要算出一个最优解。
要求时间,100ms 以内,时间越短越好,一般用户优惠券不会过百。
我们系统是基于php开发的,我试过使用回溯+剪枝计算,能求出解,但是时间不可接受,一般时间过秒就已经不可用了。
想请教下,有没有什么好的办法可以解决这个问题。
可以考虑使用c、c++构建php扩展。