美文网首页
13.2 【动态规划】js解决硬币找零问题

13.2 【动态规划】js解决硬币找零问题

作者: 狩秋之人 | 来源:发表于2019-11-19 13:19 被阅读0次

    动态规划与分治法不同之处在于分治法是将整体转变为数个相对独立的子问题,求解后组合

    而动态规划则是将整体变为相互关联的子问题,通过整体的思想求解。

    还是直接po代码吧

    'use strict';
    
    class minChangeQues {
        constructor (coins) {
            this.coins = coins
            this.cache = {}
        }
    
        changeCoins (amount) {
            // me 为整个class
            let me = this
            if (this.cache[amount]) {
                return this.cache[amount]
            }
            let min = [], newMin, newAmount
            for(let i in this.coins) {
                let coin = this.coins[i]
                newAmount = amount - coin
                if (newAmount >= 0) {
                    newMin = me.changeCoins(newAmount)
                }
                if (newAmount >= 0 && (newMin.length || !newAmount)) {
                    min = [coin].concat(newMin)
                }
            }
            return (this.cache[amount] = min)
        }
    }
    
    let temp = new minChangeQues([1,5,10,25])
    console.log(temp.changeCoins());
    

    相关文章

      网友评论

          本文标题:13.2 【动态规划】js解决硬币找零问题

          本文链接:https://www.haomeiwen.com/subject/xskwictx.html