首页 > 解决方案 > 硬币找零算法 JS

问题描述

我一直在尝试为这个算法提出一个解决方案 3-4 天,但似乎没有任何效果,可用的解决方案对我来说更先进一些。它只能用条件来解决,所以没有递归或动态编程。

给定以下面额,我需要确定提供零钱所需的最少硬币数量:1、0.5、0.2、0.1、0.05、0.02 和 0.01。

输入如下:

商品价格

客户支付的金额

目前的想法:

let price = +gets();
let paidSum = +gets();
//gets is used to accept number input
let change = paidSum - price;

我想我可以使用 Math.floor 来隔离整数部分并减去它,但是我不知道如何处理剩余的总和。

模是否可以测试剩余的总和是否包含任何剩余的变化值,然后再次减去,直到我达到零?

我确实意识到这不是最好的问题,但我在这里不知所措,除此之外我已经完成了所有其他任务。谢谢。

标签: javascriptif-statementcoin-change

解决方案


更简单,反转和映射以美分为单位的面额,并返回一个新数组,其中包含每种面额所需的硬币数量。

const coinsCents = [1, 2, 5, 10, 20, 50, 100]
const getChange = (amountInCents) => {
    return coinsCents.reverse().map(coin => {
        let amountCoin = Math.floor(amountInCents/coin)
        amountInCents -= amountCoin * coin
        return amountCoin
    }).reverse()
}

推荐阅读