找零问题求解

本文探讨了找零问题的解决方法,对比了贪心算法和动态规划的应用。在某些情况下,贪心算法可以解决找零问题,而面对特定的纸币面额组合时,动态规划则能确保找到最优解。文中通过代码示例解释了两种算法的工作原理,并介绍了动态规划的优化版本,即利用缓存避免重复计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天我们来分享一个大家都喜闻乐见的问题 – 找零问题

为什么说会喜闻乐见呢?这不想多了嘛,都跟你谈钱了,还需要多说什么吗。

说到钱,我们就不说闲话了,直接来看下今天的分享内容吧。

本文中会用到 贪心算法动态规划 ,不太明白的同学可以自行查阅这两种算法的内容,或者之后我们来做相关的分享。

首先来看如何使用贪心算法来求解。以及何时可以使用贪心算法求解。

1. 贪心算法的求解

栗子🌰:

假设当前有1、2、5、10、20、50、100 等面额的纸币,请你使用最少的纸币数量来找零。

像这种问题的找零问题就可以使用贪心算法来求解,因为所有的前置项相加的和不会超过当前元素。

如:

1 + 2 < 5

1 + 2 + 5 < 10

1 + 2 + 5 + 10 < 20

代码示例:

function minCount(amount) {
   
  let values = [1,2,5,10,20,50,100]
  let result = 0

  while(amount) {
   
    amount -= values.filter(item => item <= amount).pop()
    re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值