贪心算法——c#

ops/2025/3/19 8:46:57/

算法>贪心算法通俗解释

算法>贪心算法是一种"每一步都选择当前最优解"的算法策略。它不关心全局是否最优,而是通过局部最优的累积来逼近最终解。优点是简单高效,缺点是可能无法得到全局最优解。

一句话秒懂

自动售货机找零钱:用最少数量的硬币凑出指定金额。比如找零198美分,它会优先用25美分的大硬币,不够再用小的,直到凑够金额。


背景故事

想象你在加拿大超市当收银员(CAD场景):

  1. 顾客买了东西

  2. 你需要快速找出零钱198分

  3. 收银台硬币有:50分、25分、10分、5分、1分

  4. 目标:用最少的硬币数量凑出198分

using System;
using System.Collections.Generic;public class GreedyAlgorithm
{[CommandMethod("xx")]public static void 算法>贪心算法之硬币找零(){// 场景模拟:在 CAD 系统中自动计算最优找零方案List<int> coins = new List<int> { 1, 5, 10, 25,50 }; // 硬币面额(美分)int amount = 198; // 需要找零的金额(美分)List<int> result = CoinChange(coins, amount);Env.Editor.WriteMessage($"找零 {amount} 美分需要的最少硬币:");foreach (int coin in result){Env.Editor.WriteMessage(coin + " "); }}/// <summary>/// 算法>贪心算法实现硬币找零/// </summary>/// <param name="coins">可用硬币面额数组</param>/// <param name="amount">目标金额</param>/// <returns>硬币组合列表</returns>static List<int> CoinChange(List<int> coins, int amount){var sortCoins = coins.OrderByDescending(x=>x).ToList();// Array.Sort(coins, (a, b) => b.CompareTo(a)); // 降序排序(关键贪心步骤)List<int> change = new List<int>();foreach (int coin in sortCoins){while (amount >= coin){// 在 CAD 系统中,这里可以记录交易日志change.Add(coin);amount -= coin;}}return change;}
}

 

代码注释说明:

  1. Array.Sort(coins, (a, b) => b.CompareTo(a))
    将硬币按面额从大到小排序,这是算法>贪心算法的核心——优先使用大面额硬币

  2. while (amount >= coin)
    只要当前硬币可以用就持续使用,体现贪心的"局部最优"特性

  3. 时间复杂度为 O(n log n),主要来自排序操作

  4. 算法>贪心算法特点总结

    特性说明
    优点实现简单,运行效率高
    缺点不一定得到全局最优解
    适用场景问题具有贪心选择性质
    CAD 应用场景路径规划、元件布局、自动布线等

 


http://www.ppmy.cn/ops/166989.html

相关文章

代码随想录算法训练营第六十五天| 图论10

Bellman_ford 队列优化算法&#xff08;又名SPFA&#xff09; 代码随想录 import collectionsdef main():n, m map(int, input().strip().split())edges [[] for _ in range(n 1)]for _ in range(m):src, dest, weight map(int, input().strip().split())edges[src].append…

进程间通信--匿名管道

进程间通信介绍 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&…

网络安全运维应急响应与溯源分析实战案例

在日常运维过程中&#xff0c;网络安全事件时有发生&#xff0c;快速响应和精准溯源是保障业务稳定运行的关键。本文将通过一个实际案例&#xff0c;详细解析从发现问题到溯源定位&#xff0c;再到最终解决的完整流程。 目录 一、事件背景 二、事件发现 1. 监控告警触发 2…

后端 - java - - 权限修饰符

权限修饰符&#xff08;访问修饰符&#xff09;-- 控制类、方法、变量、构造函数的访问权限 1、public 所有成员皆可访问 用于库中的公共API接口或类 开放级别最高 2、protected 同一包中可访问 不同包中继承的子类可访问 用于继承场景&#xff0c;允许子类访问特定的字…

Git下载安装(保姆教程)

目录 1、Git下载 2、Git安装&#xff08;windows版&#xff09; &#xff08;1&#xff09;启动安装程序 &#xff08;2&#xff09;阅读许可协议 &#xff08;3&#xff09;选择安装路径 &#xff08;4&#xff09;选择组件 &#xff08;5&#xff09;选择开始菜单文件夹…

非洲能源商会:架起中非能源合作的桥梁

在全球能源转型与南南合作深化的背景下,非洲能源商会(African Energy Chamber,简称AEC) 以其独特的战略定位与实践成果,成为推动非洲能源发展与中非合作的关键力量。作为非洲领先的能源行业倡导组织,AEC自成立以来始终致力于促进非洲能源价值链的可持续发展,通过政策对话、行业…

python 入门笔记7-面向对象

1. 面向对象基础概念 类&#xff08;Class&#xff09;&#xff1a;对象的蓝图&#xff0c;定义对象的属性和方法。 对象&#xff08;Object&#xff09;&#xff1a;类的实例&#xff0c;具有具体的属性和行为。 属性&#xff08;Attribute&#xff09;&#xff1a;对象的状…

Pot-App 本地deepseek-r1 翻译开源插件,支持本地ollama deepseek-r1系列模型,同时在POT翻译窗口不显示模型思考过程

一、软件介绍 文末提供插件及源码下载 此开源插件作為支持本地ollama deepseek-r1系列模型&#xff0c;並在POT输出窗口中不显示模型思考过程。 模型安装&#xff08;根据自己的电脑配置安装相应版本&#xff0c;支持官方1.5b~8b&#xff09; Ollama模型网址&#xff1a;deep…