首页 > 其他 > 详细

[刷题] 凑硬币

时间:2021-09-03 20:08:10      阅读:19      评论:0      收藏:0      [点我收藏+]

有足够量的2分、5分、1分硬币,如果想凑齐一元钱,可以有多少种方法?

/**
 * 有足够量的硬币, 如果想凑齐指定金额, 求共有多少种方法
 * 
 * @param {Array<number>} coins 已有硬币种类
 * @param {number} target 目标金额
 * @param {number} collect 当前已有金额
 * @returns 硬币组合数量
 */
function getKindNum(coins, target, collect = 0) {
    if (coins.length === 0) {
        return collect === target ? 1 : 0
    }
    const curCoin = coins[0]
    const size = target / curCoin
    let ans = 0
    for (let i = 0; i <= size; i++) {
        ans += getKindNum(coins.slice(1), target, collect + i * curCoin)
    }

    return ans
}

console.log(getKindNum([1, 2, 5], 100))  // 541

[刷题] 凑硬币

原文:https://www.cnblogs.com/xtyuns/p/15222901.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!