使用java语言通过贪心算法实现找零钱问题,要求由用户输入钞票面额与零钱数,判断是否可以找零,并输出找零结果
时间: 2024-05-16 15:12:28 浏览: 53
好的,下面是Java代码实现:
```java
import java.util.Scanner;
public class GreedyChange {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入钞票面额的个数:");
int n = input.nextInt();
int[] faces = new int[n];
System.out.print("请输入钞票面额(从小到大排列):");
for(int i = 0; i < n; i++) {
faces[i] = input.nextInt();
}
System.out.print("请输入零钱数:");
int money = input.nextInt();
int[] counts = new int[n];
for(int i = n - 1; i >= 0; i--) {
if(money >= faces[i]) {
counts[i] = money / faces[i];
money -= counts[i] * faces[i];
}
}
if(money == 0) {
System.out.print("可以找零,各面额钞票的数量为:");
for(int i = 0; i < n; i++) {
System.out.print(counts[i] + " ");
}
}
else {
System.out.print("无法找零。");
}
}
}
```
运行程序后,按照提示输入钞票面额的个数、面额、零钱数,即可得到输出结果。
例如,输入:
```
请输入钞票面额的个数:4
请输入钞票面额(从小到大排列):1 5 10 20
请输入零钱数:37
```
输出:
```
可以找零,各面额钞票的数量为:2 1 1 1
```
表示需要2张1元面额、1张5元面额、1张10元面额、1张20元面额的钞票,才能找出37元的零钱。
阅读全文