javascript 貪心演算法說明
阿新 • • 發佈:2019-02-05
貪心演算法
貪心演算法遵循一種近似解決問題的技術,期盼通過每個階段的區域性最優選擇(當前最好的解),從而達到全域性的最優(全域性最優解)。
最少硬幣找零問題
最少硬幣找零是給出要找零的錢數,以及可以用硬幣的額度數量,找出有多少種找零方法。
如:美國面額硬幣有:1,5,10,25
我們給36美分的零錢,看能得怎樣的結果?
function MinCoinChange(coins){
var coins = coins;
var cache = {};
this.makeChange = function(amount) {
var change = [],
total = 0 ;
for (var i=coins.length; i>=0; i--){
var coin = coins[i];
while (total + coin <= amount) {
change.push(coin);
total += coin;
}
}
return change;
};
}
var minCoinChange = new MinCoinChange([1, 5, 10, 25 ]);
minCoinChange.makeChange(36);
//一個25, 一個10, 一個1
得到結果是一個25, 一個10, 一個1。貪心得到結果是一個可以接受的解,不一定總是得到最優的解,因為規劃上沒有考慮到大。
步驟如下圖: