如何求解优惠券的最优解,优惠券有同类互斥和非同类互斥

eightwhells 2019-09-27 12:05:56
问题是这样的:
背景:我们的订单在创建时,需要默认给出一个用户的优惠券最优组合。
规则:
1·优惠券是基于优惠券模板创建的,相同的优惠券模板创建的优惠券是同类,否则是不同类
2·优惠券有同类可叠加和同类不可叠加两种属性
3·优惠券有满足指定订单金额 或者 指定范围的商品数量加起来满足指定数量 才能使用的规则
求:
用户可能有N个优惠券,这优惠券类型随机,可叠加属性都是随机的。
要算出一个最优解。
要求时间,100ms 以内,时间越短越好,一般用户优惠券不会过百。

我们系统是基于php开发的,我试过使用回溯+剪枝计算,能求出解,但是时间不可接受,一般时间过秒就已经不可用了。
想请教下,有没有什么好的办法可以解决这个问题。
可以考虑使用c、c++构建php扩展。
...全文
1273 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
搁浅灬源点 2022-03-18
  • 打赏
  • 举报
回复

大佬解决了吗?我们也遇到相同的问题,可否提供一下思路。大佬大佬

YAN_YAN_Zhang619 2022-03-15
  • 打赏
  • 举报
回复

大佬解决了吗?我们也遇到相同的问题,可否提供一下思路,回溯算法实现N!是不靠谱啊,耗时太长了

tanta 2019-10-21
  • 打赏
  • 举报
回复
优惠券不到100,时间应该不用那么久吧?最好把关于优惠券的类列一下,我觉得是否是你的数据结构设计不是很合理?
  • 打赏
  • 举报
回复
你题目还没描述完。 最优解,是什么情况下的最优解?
eightwhells 2019-09-28
  • 打赏
  • 举报
回复
麻烦提供具体点的思路,请你喝咖啡
引用 1 楼 想当一个感性的码农 的回复:
动态规划应该可以。回溯是n!复杂度,只能处理极少数据。
eightwhells 2019-09-28
  • 打赏
  • 举报
回复
动态规划的实现能详解说下吗? 这里每次判断是否取下一个的时候,都需要和之前已经取到的券进行是否可叠加对比。 感觉不符合动态规划的最有子问题要求。
引用 1 楼 想当一个感性的码农 的回复:
动态规划应该可以。回溯是n!复杂度,只能处理极少数据。
eightwhells 2019-09-28
  • 打赏
  • 举报
回复
完整的描述是: 一个用户可以有很多个优惠券。 每种优惠券都有几个属性: 1·订单金额满足多少可以使用 2·订单所包含的商品数量满足多少可以使用 3·是否可以和同类优惠券叠加 4·是否可以和不同类优惠券叠加 5·优惠券面额是多少 6·优惠券属于某一类 如果用户有N个优惠券,这些优惠券的属性都是随机的。 用户在下单的时候,需要算出一个最佳的优惠券组合。
  • 打赏
  • 举报
回复
动态规划应该可以。回溯是n!复杂度,只能处理极少数据。

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧