13.3 【贪心算法】 js解决硬币求解问题

贪心算法可以说是对算法本身非常完美的解释了。即将问题分拆为若干子问题,再各自求出子问题的最优解,而后将最优解组合。相对来说格局不如【动态规划】格局大,个人目前感觉比较偏向单线程。

'use strict';

// coins 表示拥有的硬币种类
// 局部最优之和
// 缺点: 6得到是[4,1,1] 而不是[3,3]
class minChangeQues {
    constructor (coins) {
        this.coins = coins;
    }

    changeCoins(amount) {
        let change = []
        let total = 0
        for (let i = this.coins.length - 1; i >= 0; i --) {
            let coin = this.coins[i]
            while (coin + total <= amount) {
                change.push(coin)
                total += coin
            }
        }
        return change
    }
}

let temp = new minChangeQues([1,5,10,25])
console.log(temp.changeCoins(50));

你可能感兴趣的:(13.3 【贪心算法】 js解决硬币求解问题)