如何计算硬币数量的变化?

Posted

技术标签:

【中文标题】如何计算硬币数量的变化?【英文标题】:How do I calculate change in number of coins? 【发布时间】:2017-10-07 21:28:30 【问题描述】:

“给定小于 1 美元的零钱,找出弥补这一数额所需的硬币。您的程序应该找出硬币的最小数量。例如,如果零钱是 0.56 美元,则需要 2 个季度,1镍和 1 便士,总共 4 个硬币。提示:使用整数除法和余数。

我必须在 java 上为此编写代码以完成学校作业。我不允许使用 if 语句,我该怎么做?

【问题讨论】:

如果您担心的只是无法使用 if 块,if (cond) block 等效于 for (;cond;) block; break; while (cond) block; break; Why is “Can someone help me?” not an actual question? 您的讲师不正确。 1half dollar,1镍和1便士使用三个硬币。也可以接受 1 个半美元和 2 个three cent nickels。 3 个硬币小于 4 个。 Kandiah,你能列出你可以使用哪些硬币吗?这里的大多数人都不熟悉美国货币,而且您似乎对可以使用的货币有限制,因为您的示例没有显示获得 0.56 美元所需的最低硬币数量。 Stack Overflow 是一个问答网站,而不是家庭作业写作服务。我们不会为你做作业。 An open letter to students with homework problems 【参考方案1】:

正如提示所说,使用整数除法和余数。 Java 有 %(模数)运算符来计算余数。

假设更改是以美分定义的int(所以是 99 美分,而不是 0.99 美元),您可以这样做:

int 硬币 = change/25 + change%25/10 + ... ;

【讨论】:

请不要通过回答这些“做我的功课”问题来鼓励他们。谢谢。 我还没有提供完整的作业答案,OP 仍然需要了解模数和整数除法才能完成它。

以上是关于如何计算硬币数量的变化?的主要内容,如果未能解决你的问题,请参考以下文章

最小硬币变化(无限,未绑定)打印值

用小数点计数变化(可能是简单的解决方案)

硬币变化 - DP

动态编程,硬币变化,内存泄漏?

使用背包解决硬币变化。参考:另一个背包 Hackerrank CodeAgon

硬币问题-动态规划详解