javascript - 硬币找零算法 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 来隔离整数部分并减去它,但是我不知道如何处理剩余的总和。
模是否可以测试剩余的总和是否包含任何剩余的变化值,然后再次减去,直到我达到零?
我确实意识到这不是最好的问题,但我在这里不知所措,除此之外我已经完成了所有其他任务。谢谢。
解决方案
更简单,反转和映射以美分为单位的面额,并返回一个新数组,其中包含每种面额所需的硬币数量。
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()
}
推荐阅读
- go - 调试 Go 依赖包?
- .htaccess - 可以在不更改地址栏中的 URL 的情况下将 URL 重写为子域吗?
- postgresql - 合并行 postgres 并在不为空时用最新的替换值
- python - 为什么 import pygame_textinput 不起作用?
- wordpress - 错误:credit_card_form 自 2.6 版以来已弃用!改用 > WC_Payment_Gateway_CC->form
- angular - 错误:未捕获(承诺中):错误:StaticInjectorError(AppModule)[Http]:StaticInjectorError Http
- apache-spark - 使用 apache spark 或 flink 的基于 S3 的流解决方案
- ios - 添加 UINavigationController 时崩溃 - swift
- node.js - 如何通过外部网络访问 create-react-app
- php - php api调用另一个php api-body丢失