我用Java语言写了一个贪心算法小案例

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。

下面是一个使用Java实现的贪心算法示例,该算法解决了找零问题。给定一组硬币面值和一个总金额,我们需要找到最少的硬币数量来凑成这个总金额。

java 复制代码
import java.util.Arrays;

public class GreedyAlgorithm {
    public static void main(String[] args) {
        int[] coins = {1, 2, 5, 10, 20, 50, 100};
        int amount = 93;
        System.out.println("Minimum number of coins required: " + findMinCoins(coins, amount));
    }

    public static int findMinCoins(int[] coins, int amount) {
        Arrays.sort(coins); // 对硬币面值进行排序
        int count = 0;
        for (int i = coins.length - 1; i >= 0; i--) {
            while (amount >= coins[i]) {
                amount -= coins[i];
                count++;
            }
        }
        return count;
    }
}

在这个例子中,我们首先对硬币面值进行排序,然后从最大的硬币面值开始,尽可能多地使用该硬币,直到无法继续使用为止。然后我们继续尝试下一个较小的硬币面值,以此类推,直到凑齐总金额。最后返回使用的硬币数量。

相关推荐
吃好睡好便好10 小时前
用for循环语句求和
开发语言·人工智能·学习·matlab·学习方法
萌新小码农‍10 小时前
人工智能数学基础+python实例(人工智能学习day3)
开发语言·人工智能·python
Lumbrologist10 小时前
【C++】零基础入门 · 第 1 节:第一个程序 Hello World 与编译运行
开发语言·c++
超梦dasgg10 小时前
Java 生产环境 MQ 技术选型全解析
java·开发语言·java-rocketmq·java-rabbitmq
霸道流氓气质10 小时前
Spring AI 多工具链式调用(Tool Chain)极简实战
java·人工智能·spring
罗超驿11 小时前
22.深入剖析JDBC架构:从原生API到企业级数据交互核心
java·数据库·mysql·面试
桀人11 小时前
C++——模板初阶(收录在专栏C++入门到精通)
开发语言·c++
一直有一个ac的梦想11 小时前
cmu15445 2025fall lec 18 transactions with two-phase lock
java·开发语言·数据库
九皇叔叔11 小时前
Spring-Ai-Alibaba [04] 04-llm-platform-custom-demo
java·人工智能·spring