📜  硬币找零的Java程序(1)

📅  最后修改于: 2023-12-03 14:56:31.014000             🧑  作者: Mango

硬币找零的Java程序

这是一个Java程序,用于实现硬币找零的功能。该程序可以接受一个输入金额,并计算出最少需要多少个面值不同的硬币来找零。这个程序使用了贪心算法来实现。

贪心算法

贪心算法是一种解决优化问题的算法。它可以在多项式时间内解决问题,但不保证得到最优解。贪心算法采取将问题分解成若干个子问题,对每个子问题进行优化。对于每个子问题,求出一个最优解,然后将所有子问题的最优解组合成原问题的最优解。

硬币找零问题可以使用贪心算法来解决。其贪心策略是:优先使用面值最大的硬币找零,直到找零金额为0。

Java代码实现

下面是该程序的Java代码实现:

import java.util.Scanner;

public class CoinChange {
    public static void main(String[] args) {
        int[] coins = {50, 20, 10, 5, 1};
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入金额:");
        int amount = scanner.nextInt();
        int coinCount = 0;
        for (int i = 0; i < coins.length; i++) {
            while (amount >= coins[i]) {
                amount -= coins[i];
                coinCount++;
            }
        }
        System.out.println("最少需要" + coinCount + "个不同面值的硬币来找零。");
    }
}

在这个程序中,硬币的面值存储在一个整型数组中。输入金额的代码使用了Java的Scanner类来实现。然后,程序使用一个for循环遍历硬币面值数组,对每个硬币面值使用while循环,直到找零金额为0为止。在while循环中,每找到一个硬币,就将找零金额和硬币数量更新。最后输出硬币数量即为答案。

Markdown返回类型
# 硬币找零的Java程序

这是一个Java程序,用于实现硬币找零的功能。该程序可以接受一个输入金额,并计算出最少需要多少个面值不同的硬币来找零。这个程序使用了贪心算法来实现。

## 贪心算法

贪心算法是一种解决优化问题的算法。它可以在多项式时间内解决问题,但不保证得到最优解。贪心算法采取将问题分解成若干个子问题,对每个子问题进行优化。对于每个子问题,求出一个最优解,然后将所有子问题的最优解组合成原问题的最优解。

硬币找零问题可以使用贪心算法来解决。其贪心策略是:优先使用面值最大的硬币找零,直到找零金额为0。

## Java代码实现

下面是该程序的Java代码实现:

```java
import java.util.Scanner;

public class CoinChange {
    public static void main(String[] args) {
        int[] coins = {50, 20, 10, 5, 1};
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入金额:");
        int amount = scanner.nextInt();
        int coinCount = 0;
        for (int i = 0; i < coins.length; i++) {
            while (amount >= coins[i]) {
                amount -= coins[i];
                coinCount++;
            }
        }
        System.out.println("最少需要" + coinCount + "个不同面值的硬币来找零。");
    }
}

在这个程序中,硬币的面值存储在一个整型数组中。输入金额的代码使用了Java的Scanner类来实现。然后,程序使用一个for循环遍历硬币面值数组,对每个硬币面值使用while循环,直到找零金额为0为止。在while循环中,每找到一个硬币,就将找零金额和硬币数量更新。最后输出硬币数量即为答案。