今天我们来分享一个大家都喜闻乐见的问题 – 找零问题
。
为什么说会喜闻乐见呢?这不想多了嘛,都跟你谈钱了,还需要多说什么吗。
说到钱,我们就不说闲话了,直接来看下今天的分享内容吧。
本文中会用到 贪心算法
和 动态规划
,不太明白的同学可以自行查阅这两种算法的内容,或者之后我们来做相关的分享。
首先来看如何使用贪心算法来求解。以及何时可以使用贪心算法求解。
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