PHP如何运用动态规划算法优化红包组合方案?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2463个文字,预计阅读时间需要10分钟。
最近一个小需求,每个订单会根据金额决定用户可使用的红包最大值。若用户选择使用红包,需娱乐用户从拥有的红包列表中选取最优组合,以获得最大红包值。
最近在做一个小需求,每笔订单会根据金额决定用户可以使用的红包最大值,如果用户选择使用红包,需要帮助用户从拥有的红包列表里选取最优的红包组合,要求组合出的红包值最接近或等于可以使用的红包最大值。后面思考了一圈,这不就是 『0-1背包问题』么,终于可以把以前学过的 『动态规划』 算法拿来实战一下了!
动态规划是什么
动态规划 (Dynamic programming 简写:DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。
动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。
动态规划适用场景
一般使用动态规划来解决求最优解的问题。在解决问题的过程中需要多次决策,而每次决策都有产生一组状态,然后从最优的决策中继续下一次的决策,最终找到最优的结果。
另外动态规划还具有3个特征,如下:
最优子结构性质
如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。
本文共计2463个文字,预计阅读时间需要10分钟。
最近一个小需求,每个订单会根据金额决定用户可使用的红包最大值。若用户选择使用红包,需娱乐用户从拥有的红包列表中选取最优组合,以获得最大红包值。
最近在做一个小需求,每笔订单会根据金额决定用户可以使用的红包最大值,如果用户选择使用红包,需要帮助用户从拥有的红包列表里选取最优的红包组合,要求组合出的红包值最接近或等于可以使用的红包最大值。后面思考了一圈,这不就是 『0-1背包问题』么,终于可以把以前学过的 『动态规划』 算法拿来实战一下了!
动态规划是什么
动态规划 (Dynamic programming 简写:DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。
动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。
动态规划适用场景
一般使用动态规划来解决求最优解的问题。在解决问题的过程中需要多次决策,而每次决策都有产生一组状态,然后从最优的决策中继续下一次的决策,最终找到最优的结果。
另外动态规划还具有3个特征,如下:
最优子结构性质
如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。

