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