js动态规划---最少硬币找零问题

给定钱币的面值 1、5、10、25

需要找给客户 36

最少找零数为: 1、10、25

		function MinCoinChange(coins){
var coins = coins;
var cache = {}; this.makeChange = function(amount){
var me = this;
if(!amount){
return [];
} if(cache[amount]){
return cache[amount];
} var min = [],newMin,newAmount;
for(var i= 0; i < coins.length; i++){
var coin = coins[i];
newAmount = amount - coin;
if(newAmount >= 0){
newMin = me.makeChange(newAmount);
}
if(
newAmount >= 0 && //差值大于等于0
(newMin.length < min.length -1 || !min.length ) && //获取到的组合长度小于当前组合,或者当前组合为空
(newMin.length || !newAmount) //获取到的组合有值或者差值为0
){
min = [coin].concat(newMin);
console.log("new min "+min+"for"+amount);
}
} return (cache[amount] = min);
}
} var test = new MinCoinChange([1,5,10,25]);
console.log(test.makeChange(36))

  

上一篇:Odoo Qweb报表css丢失问题


下一篇:df说磁盘空间满了, du说没有,到底谁是对的