贪心算法——c#

贪心算法通俗解释

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

一句话秒懂

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


背景故事

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

  1. 顾客买了东西

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

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

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

    using System;
    using System.Collections.Generic;

    public class GreedyAlgorithm
    {
    [CommandMethod("xx")]
    public static void 贪心算法之硬币找零()
    {
    // 场景模拟:在 CAD 系统中自动计算最优找零方案
    List coins = new List { 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),主要来自排序操作

贪心算法特点总结

特性 说明
优点 实现简单,运行效率高
缺点 不一定得到全局最优解
适用场景 问题具有贪心选择性质
CAD 应用场景 路径规划、元件布局、自动布线等
相关推荐
Robot_Nav几秒前
贪心算法、动态规划与 MPPI 算法结构相关力扣题目汇总
算法·贪心算法·动态规划
战族狼魂35 分钟前
每日一课:算法系统学习路线
人工智能·算法·大模型·大语言模型
变量未定义~44 分钟前
连通块中点的数量、堆箱子(4星)
算法
j7~1 小时前
【算法】专题二:滑动窗口之水果成蓝,找到字符串中所有字⺟异位词等算法题
c++·算法·滑动窗口·水果成蓝·最小字串覆盖·优选算法精选
木木子221 小时前
# 星座配对深度解析:Select 长列表选择器、矩阵评分算法与数据驱动建议
java·算法·华为·矩阵·harmonyos
大鱼>1 小时前
AI+货物追踪:跨境电商包裹追踪系统
人工智能·深度学习·算法·机器学习
大鱼>1 小时前
AI+货物追踪:全链路货物可视化追踪系统
人工智能·深度学习·算法·机器学习
大江东去浪淘尽千古风流人物1 小时前
【SLAM】slam高动态位姿估计全链路拆解
算法·面试·职场和发展·视觉里程计·slam·vio·大疆
想你依然心痛1 小时前
量子计算对嵌入式密码学的挑战与后量子算法准备
算法·密码学·量子计算
小O的算法实验室2 小时前
2026年SEVC,集成 Q-learning 多目标优化算法+车辆灵活编组列车调度
算法