javascript 貪心算法說明

貪心算法

貪心算法遵循一種近似解決問題的技術,期盼通過每個階段的局部最優選擇(當前最好的解),從而達到全局的最優(全局最優解)。

最少硬幣找零問題
最少硬幣找零是給出要找零的錢數,以及可以用硬幣的額度數量,找出有多少種找零方法。
如:美國面額硬幣有: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。貪心得到結果是一個可以接受的解,不一定總是得到最優的解,因爲規劃上沒有考慮到大。

步驟如下圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章