贪心算法遵循一种近似解决问题的技术,期盼通过每个阶段的局部最优选择(当前最好的解),从而达到全局的最优(全局最优解)。
贪心得到结果是一个可以接受的解,不一定总是得到最优的解
1、最少硬币找零问题
最少硬币找零是给出要找零的钱数,以及可以用硬币的额度数量,找出有多少种找零方法。
如:美国面额硬币有:1,5,10,25
我们给36美分的零钱,看能得怎样的结果?
1 function MinCoinChange(coins){ 2 var coins = coins; 3 4 var cache = {}; 5 6 this.makeChange = function(amount){ 7 var change = [], total = 0; 8 9 for(var i = coins.length; i >= 0; i--){10 var coin = coins[i];11 while(total + coin <= amount){12 change.push(coin);13 total += coin;14 }15 }16 17 return change;18 }19 }20 21 var minCoinChange = new MinCoinChange([1, 5, 10, 25]);22 minCoinChange.makeChange(36);23 //一个25, 一个10, 一个1