最少代金券问题之JavaScript解法

前言

最近在牛客网上刷题,遇到一题代金券的问题,花了我一下午时间研究(我才刚开始复习算法和数据结构),写此文章来记录一下。

题目传送门:https://www.nowcoder.com/question/next?pid=21910781&qid=894518&tid=31674041 第六题

 

问题

近期某商场由于周年庆,开启了“0元购”活动。活动中,消费者可以通过组合手中的代金券,实现0元购买指定商品。

聪明的小团想要用算法来帮助他快速计算:对于指定价格的商品,使用代金券凑出其价格即可,但所使用的代金券总面额不可超过商品价格。由于代金券数量有限,使用较少的代金券张数则可以实现价值最大化,即最佳优惠。

假设现有100元的商品,而代金券有50元、30元、20元、5元四种,则最佳优惠是两张50元面额的代金券;而如果现有65元的商品,则最佳优惠是两张30元代金券以及一张5元代金券。

请你帮助小团使用一段代码来实现代金券计算。

 

思考

蠢蠢的我第一反应就是使用贪心算法(毕竟我还没开始复习),但是后来发现通过率不高才想起贪心算法算出最优解是有条件的,这题并不满足。(贪心算法是啥?搜其他文章去吧)所以要用动态规划(看了很多其他文章才发现的,其实这类问题叫做找零问题)。有很多解法都是用其他语言的,然后

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

来坛天子笑~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值