硬币找回零钱:有3种硬币分别是1角、2角、5角,如果要给客户找回零钱1元8角,设计一种算法使得找回的硬币数量尽可能少? 编程实现(Java代码):
时间: 2024-09-26 08:02:14 浏览: 24
为了找到给1元8角找零最少的硬币组合,可以使用贪心策略,从最大的面值开始尝试,直到总金额达到目标值为止。以下是Java代码实现:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
double target = 1.8;
List<Double> coins = new ArrayList<>();
coins.add(0.5); // 5角硬币
coins.add(0.2); // 2角硬币
coins.add(0.1); // 1角硬币
double remaining = target;
int coinCount = 0;
while (remaining > 0 && !coins.isEmpty()) {
double maxCoin = Collections.max(coins);
if (maxCoin <= remaining) {
remaining -= maxCoin;
coinCount++;
} else {
break;
}
}
System.out.println("最少需要找回的硬币数量:" + coinCount);
System.out.println("硬币组合:");
for (double coin : coins) {
while (coin <= remaining) {
System.out.print(" " + coin);
remaining -= coin;
}
}
}
}
```
这段代码首先初始化硬币列表,然后在`while`循环中,每次取出最大面额的硬币,直到无法再找回或找回的总金额达到目标值。最后打印出所需的最少硬币数量以及组合情况。
阅读全文