貪心算法遵循一種近似解決問題的技術,期盼通過每個階段的局部最優選擇(當前最好的解),從而達到全局的最優(全局最優解)。
貪心得到結果是一個可以接受的解,不一定總是得到最優的解
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