「算法学习」:贪心算法找零问题

找零算法 , 找零???
假设你是一个商店老板 , 你需要给顾客找零n元钱 , 你手上有的钱的面值为:100元 , 50元 , 20元 , 5元 , 1元 。请问如何找零使得所需要的钱币数量最少?
【「算法学习」:贪心算法找零问题】例子:你需要找零126元 , 则所需钱币数量最少的方案为100元1找 , 20元1张 , 5元1张 , 1元1张 。
具体思路:假设我们需要找零126元 , 我们先从面额大的钱比较 , 我们发现126比100大 , 除法计算可以找一张100块 , 然后还有26元 , 继续按照上面的方法去找其他面额的钱币 , 发现20比剩下的钱小 , 那再找一张20的 , 还剩6块 , 继续找一张5块的和1块的 。这其实就是贪心算法的思想 , 每次都很贪心的去找最大的匹配那个值 , 然后再找次大的 。
const moneyList = [100, 50, 20, 5, 1];// 现有的面值function changeMoney(target, allMoney) {const length = moneyList .length;const result = [];// 存储结果的数组 , 每项表示对应面值的张数for(let i = 0; i < length; i++) {if(n >= moneyList [i]) {// 需要找的钱数比目前面额大就可以找钱 , 相除得出可以找几张 , 将张数放入数组中result[i] = parseInt(n / moneyList [i]);n = n - result[i] * moneyList [i];// 更新剩下需要找的钱} else {// 当前面额比所需要找的钱数大则将这个数组位置置为0result[i] = 0;}} return result;}const result = changeMoney(126, moneyList );console.log(result);// [1, 0, 1, 1, 1]