找零算法JS

0 javascript if-statement coin-change

我已经尝试为这个算法找到一个解决方案 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;
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 5

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

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()
}
Run Code Online (Sandbox Code Playgroud)