贪心算法简介(greed)

devtools/2025/3/17 4:56:59/

前言:

贪心算法(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;
}


http://www.ppmy.cn/devtools/167441.html

相关文章

conda install 和 pip install 的区别

conda install 和 pip install 是两个常用的包安装命令&#xff0c;但它们在很多方面存在差异。 1. 所属管理系统不同 1.1 conda install conda install 是Anaconda和Miniconda发行版自带的包管理工具 conda 的安装命令。conda 是一个跨平台的开源包管理系统和环境管理系统&…

大语言模型基础之‘显存优化‘

上一篇可扩展的训练技术(二)中&#xff0c;我们介绍了零冗余优化器&#xff08;Zero Redundancy Optimizer, Zero&#xff09;&#xff0c;该技术由DeepSpeed代码库提出&#xff0c;主要用于解决数据并行中的模型冗余技术&#xff0c;即在数据并行训练中&#xff0c;每个GPU上都…

Unity开发的抖音小游戏接入抖音开放平台中的流量主(抖音小游戏接入广告)

前言:作者在进行小游戏审核版本的过程中,碰到了下列问题,所以对这个抖音小游戏接入广告研究了下。 还有就是作者的TTSDK版本号是6.2.6,使用的Unity版本是Unity2022.3.29f1,最好和作者的两个版本号保持一致,因为我发现TTSDK旧版的很多函数在新版中就已经无法正常使用了,必…

蓝桥杯 3514子串简写

问题描述 程序猿圈子里正在流行一种很新的简写方法&#xff1a;对于一个字符串&#xff0c;只保留首尾字符&#xff0c;将首尾字符之间的所有字符用这部分的长度代替。例如 internation-alization 简写成 i18n&#xff0c;Kubernetes &#xff08;注意连字符不是字符串的一部分…

Qt 数据库操作(Sqlite)

数据库简介 关于数据库的基础知识这里就不做介绍了&#xff0c;相关博客可以查看&#xff1a; SQL基础知识 数据库学霸笔记 上面博客都写的比较详细&#xff0c;本文主要介绍如何使用Qt进行数据库相关操作&#xff0c;数据库分为关系型数据库和非关系型数据&#xff0c;关系…

datax-coud部署

centos7系统环境安装 jdk1.8安装 cd /usr/local 上传jdk文件到/usr/local目录下解压缩 tar -zxvf jdk-8u261-linux-x64.tar.gz# 配置环境变量 vim /etc/profileexport JAVA_HOME=/usr/local/jdk1.8.0_261 export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib export PATH=$JAVA_…

前端UI编程基础知识:基础三要素(结构→表现→行为)

以下是重新梳理的前端UI编程基础知识体系&#xff0c;结合最新技术趋势与实战要点&#xff0c;以更适合快速掌握的逻辑结构呈现&#xff1a; 一、基础三要素&#xff08;结构→表现→行为&#xff09; 1. HTML5 核心能力 • 语义化标签&#xff1a;<header>, <nav&g…

【无标题】ffmpeg 合并文件夹下所有视频

(Get-Content "F:\33333333333333\1146523396\videos.txt") | ForEach-Object { "file $_" } | Set-Content "F:\33333333333333\1146523396\videos.txt"这个会把目录下的所有MP4视频文件按文件名写到一个文件。 powershell ffmpeg -f concat -…