贪心算法简介(greed)

embedded/2025/3/14 18:13:24/

前言:

贪心算法(Greedy Algorithm)是一种在每个决策阶段都选择当前最优解的算法策略,通过局部最优的累积来寻求全局最优解。其本质是"短视"策略,不回溯已做选择。

什么是贪心、如何来理解贪心(个人对贪心的理解)

前言对贪心是一种概念的回答。接下来就了解一下自己对贪心的理解,如果学习算法的化建议优先学习动态规划动态规划相对于其他算法来说很简单。但是,贪心算法动态规划不同,非常难,贪心讲究策略,每一道贪心有每一道贪心题解题的策略

什么是贪心算法

解决问题的策略,由局部最优到全局最优,把解决问题的过程分为若干步,在解决每一步的时候,都选择当前看起来最优的解法,贪心就体现在最优上,希望得到全局最优,但只是看起来最优,在每一步的过程中都选择当前看起来最优的策略(找零问题),简单来说就是只考虑眼前的利益,目光不长远。

贪心算法的特点:

贪心策略的提出,可以看出贪心策略的提出是没有标准模板的,可能换一道贪心题其贪心策略也就不一样了,这也就是贪心难的地方了,可能每一道贪心题的贪心策略都是不同的。因为贪心是数目寸光的,所以就要考虑到贪心策略的正确性有可能贪心策略是一个错误的方法,所以正确的贪心策略是需要严格证明的,说到贪心策略的证明,在数学上你见到的还是你没有见到的证明方法都可以拿来证明。

找零问题

#include <vector>
#include <algorithm>
using namespace std;vector<int> greedyCoinChange(int amount, vector<int> coins) {sort(coins.rbegin(), coins.rend()); // 降序排列vector<int> result;for (int coin : coins) {while (amount >= coin) {result.push_back(coin);amount -= coin;}}return (amount == 0) ? result : vector<int>(); // 返回空表示无解
}

活动选择

struct Activity {int start, end;
};vector<Activity> selectActivities(vector<Activity> activities) {sort(activities.begin(), activities.end(), [](const auto& a, const auto& b){ return a.end < b.end; });vector<Activity> selected;int lastEnd = -1;for (auto& act : activities) {if (act.start >= lastEnd) {selected.push_back(act);lastEnd = act.end;}}return selected;
}

文章来源:https://blog.csdn.net/2301_80508598/article/details/146213372
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/embedded/172545.html

相关文章

C# 发送邮件 报错:此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。

C# 发送邮件 报错&#xff1a;此请求已被阻止&#xff0c;因为当用在 GET 请求中时&#xff0c;会将敏感信息透漏给第三方网站。 报错信息分析 当你遇到如下报错时&#xff1a; 此请求已被阻止&#xff0c;因为当用在 GET 请求中时&#xff0c;会将敏感信息透漏给第三方网站。…

【MySQL】用户管理和权限

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;【MySQL】用户管理和权限 发布时间&#xff1a;2025.3.12 隶属专栏&#xff1a;MySQL 目录 引言用户用户信息创建用户语法案例 修改用户密码语法案例 删除用户语法案例 权限权限列表查看和刷新用户的权限给用户授权…

52.HarmonyOS NEXT 登录模块开发教程(六):UI设计与用户体验优化

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT 登录模块开发教程&#xff08;六&#xff09;&#xff1a;UI 设计与用户体验优化 文章目录 HarmonyOS NEXT 登录模块开发教程&…

STM32全系大阅兵(2)

接前一篇文章:STM32全系大阅兵(1) 本文内容参考: STM32家族系列的区别_stm32各个系列区别-CSDN博客 STM32--STM32 微控制器详解-CSDN博客

JVM之基础知识

简介 JVM&#xff1a;Java Virtual Machine&#xff0c;Java虚拟机&#xff0c;用于运行java程序。 JVM的运行机制&#xff1a;在运行Java程序时&#xff0c;首先会启动jvm&#xff0c;然后由它来负责解释执行Java程序&#xff0c;并且Java程序只能运行于jvm之上&#xff0c;…

神经网络完成训练的详细过程

神经网络完成训练的详细过程 一、神经网络的基本概念 神经网络是一种模拟人脑神经系统的计算模型&#xff0c;由大量的神经元&#xff08;节点&#xff09;和它们之间的连接&#xff08;权重&#xff09;组成。神经元接收输入信号&#xff0c;通过加权求和和激活函数的处理&a…

【图片批量转换合并PDF】多个文件夹的图片以文件夹为单位批量合并成一个PDF,基于wpf的实现方案

项目背景: 多个图片分布在不同文件夹,如何以文件夹为单位批量合并成一个PDF,还要保证文件夹里面图片大小和顺序 实现功能: 1、单张图片的转换PDF:一张图临时转一下 2、多张图片转换成PDF:多张图单独转成PDF 3、多级目录多张图转换成PDF:多级目录多张图单独转成多个PDF…

基于协同过滤算法的音乐推荐系统(源码+部署教程)

运行环境 基于协同过滤算法的音乐推荐系统的运行环境如下&#xff1a; • 前端&#xff1a;Vue • 后端&#xff1a;Java • IDE工具&#xff1a;IntelliJ IDEA • 技术栈&#xff1a;SpringBoot Vue MySQL 主要功能 基于协同过滤算法的音乐推荐系统主要包含前端和后端…