zoukankan      html  css  js  c++  java
  • 动态规划-最小硬币找零

     最少硬币找零问题是硬币找零问题的一个变种。硬币找零问题是给出要找零的钱数,

    以及可用的硬币面额d1 …dn 及其数量,找出有多少种找零方法。最少硬币找零问题是给出要找零的钱数,

    以及可用的硬币面额d1 …dn 及其数量,找到所需的最少的硬币个数。

     

    // 最小硬币找零
        function MinCoinChange(coins) {
          var coins = coins; //{1}
          var cache = {}; //{2}
          this.makeChange = function (amount) {
            var me = this;
            console.log(amount,'amount')
            if (!amount) { //{3}
              return [];
            }
            if (cache[amount]) { //{4}
              return cache[amount]; 
            }
            var min = [], newMin, newAmount;
            for (var i = 0; i < coins.length; i++) { //{5}
              var coin = coins[i];
              newAmount = amount - coin; //{6}
              if (newAmount >= 0) {
                newMin = me.makeChange(newAmount); //{7}
                console.log(newAmount, 'newAmount' , newMin, amount , 'amount')
              }
              if (
                newAmount >= 0 && //{8}
                (newMin.length < min.length - 1 || !min.length)//{9}
                && (newMin.length || !newAmount)) //{10} 判断newAmount是否有效,minValue (最少硬币数)是否是最优解,与此同时minValue和newAmount是否是合理的值
              {
                min = [coin].concat(newMin); //{11}
                console.log('new Min ' + min + ' for ' + amount);
              }
            }
            console.log(amount, min, 'cache')
            return (cache[amount] = min); //{12}
          };
        }

    codepen链接

    https://codepen.io/pprachel/pen/NejOKK?editors=1111

  • 相关阅读:
    android自定义View之NotePad出鞘记
    一个电商项目的Web服务化改造
    一个电商项目的Web服务化改造
    POJ 2886 Who Gets the Most Candies?
    POJ 2392 Space Elevator
    POJ 1276 Cash Machine
    POJ 2063 Investment
    CodeForces 159c String Manipulation 1.0
    Gym
    FZU 1921 栀子花开
  • 原文地址:https://www.cnblogs.com/ppxyq/p/10169680.html
Copyright © 2011-2022 走看看