1. 程式人生 > >javascript 貪心演算法說明

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。貪心得到結果是一個可以接受的解,不一定總是得到最優的解,因為規劃上沒有考慮到大。

步驟如下圖: