模拟商场优惠打折

566 篇文章

已下架不支持订阅

472 篇文章

已下架不支持订阅

141 篇文章

已下架不支持订阅

题目解析

本题的解题思路如下,首先实现满减,打折,无门槛的逻辑:

  • 满减逻辑,只要总价price大于等于100,且还有满减券,则不停price -= Math.floor(price / 100) * 10; 直到总价price小于100,或者满减券用完。
  • 打折逻辑,按照题目意思,打折券只能使用一次,因此无论打折券有多少张,都只能使用一次,因此只要打折券数量大于等于1,那么price = Math.floor(price * 0.92);
  • 无门槛逻辑,只要总价price大于0,且还有无门槛券,则不停price -= 5; 直到price小于等于0,或者无门槛券用完。

接下来就是求上面三种逻辑的任选2个的排列:

假设满减是M,打折是N,无门槛是K,则有排列如下:

  • MN、NM
  • MK、KM
  • NK、KN

注意,券的使用对顺序敏感。

因此,求出以上排列后,对每个人的总价使用六种方式减价,只保留减价最多,用券最少的那个。


优化思路:

对于无门槛券的使用,无门槛券总是在最后使用才会最优。

对于满减来说,无门槛肯定是最后使用最优惠,

对于92折来说,

  • 先用无门槛后打折(x-5y)*0.92 = x*0.92 - 5*0.92*y 
  • 先打折后用无门槛 x*0.92 -

已下架不支持订阅

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿甘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值