optimization - 折扣分配问题(优化)
问题描述
假设我们有一家商店并销售5种不同的产品:A、B、C、D和E。 每种产品的固定基本成本为 8.00 美元。
现在我们将购买的每种产品的数量表示为一个元组(a, b, c, d, e)。以下是折扣规则:
- 仅 1 个不同的项目(例如(1,0,0,0,0)或(0,22,0,0,0)):0%
- 2 个不同的项目(例如(1,2,0,0,0)):5%
- 3 个不同的项目(例如(0,2,3,1,0)):10%
- 4 种不同的物品:20%
- 5 种不同的物品:25%
例如,假设我们有(2,0,3,1,5),所以 2x 产品 A,3x 产品 C,1x 产品 D,5x 产品 E。然后例如我们可以使用贪心方法:
(2,0,3,1,5) -> (1,0,2,0,4) -> (0,0,1,0,3) -> (0,0,0,0,2) -> (0,0,0,0,1) -> (0,0,0,0,0)
(-20%) (-10%) (-5%) (-0%) (-0%)
每组不同的产品只能应用一次折扣。第一步,我们将其应用于 4 种不同的产品,因此($8.00 * 4) * 0.8,第二步我们将得到($8.00 * 3) * 0.90。
因此,如果我们在其中引入变量,那么我们通常会得到
totalPrice = [(base_price * n) * discountFor(n)] + [(base_price * (n-1)) * discountFor(n-1)] + ... + [(base_price * 2) * discountFor(2)] + (k * base_price)
我不允许使用幼稚的方法。玩了几个例子,我发现贪婪的方法非常稳定,但我不确定是否有反例。
我尝试正式写下问题,但这里没有明显的分析解决方案,因为我们可以使用特定折扣的频率取决于我们之前使用过的折扣。
有没有办法使用动态规划、线性规划或其他解决问题的技术来解决这个问题?
解决方案
推荐阅读
- openlayers - OpenLayers 计算两个坐标之间的距离给出了错误的答案
- c - 调用堆栈函数序言混乱
- jmeter - Jmeter-如何捕获从请求发送到在数据库中更新的时间?
- php - 检查变量是否不同,回显然后更新变量以重新检查
- java - 构造函数在 JUnit 测试期间为类方法返回 null
- java - Java不返回超类的值,将对象作为json传输时将字段返回为null
- python - 迁移到 heroku postgres db 时出错:为列“id”指定了多个默认值
- javascript - 条纹。TypeError:document.querySelectorAll 不是函数
- google-cloud-platform - GCP Cloud Armor 是否支持 TCP 负载均衡器?我无法将 TCP 负载均衡器添加为 Cloud Armor 中的目标
- android - 如何在android应用程序中存储许多音频文件