我一直试图为这个算法提出一个解决方案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来隔离整数部分并减去它,但后来我不知道如何处理剩余的总和 .
模数是否可以测试剩余的和是否包含任何剩余的变化值,然后再次减去直到我达到零?
我确实意识到这不是最好的问题,但我在这里不知所措,除此之外我还完成了其他任务 . 谢谢 .
1 回答
使用您指定的面额,问题比一般change making problem更简单 . 在这个实际案例中,我们可以确定使用最大面额(不大于支付金额)总是会产生最佳解决方案 .
因此,不需要递归或动态编程 . 只需一个简单的循环即可 .
我将在这里忽略获得账单价格和客户支付金额的额外“层” . 最后,唯一重要的是回报客户的变化金额 . 因此,此片段要求更改金额并返回需要作为更改提供的硬币 .