深入浅出贪心算法

news/2024/7/8 0:05:18

前言

到目前为止学了数组、链表两类物理数据结构,和栈、队列两类线性逻辑结构,以及树(二叉树、二叉查找树、红黑树)、图非线性数据结构,以及基于这些数据结构的二分查找、DFS/BFS、递归、排序等算法。

接下来会学习贪心、分治、回溯、动态规划这 4 个算法思想,这类算法思想都有原理容易理解,但是很难掌握和灵活应用的特点。

一,如何理解贪心算法

贪心算法(英语:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。比如在旅行推销员问题中,如果旅行员每次都选择最近的城市,那这就是一种贪心算法。

贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。简单地说,问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。

贪心算法与动态规划的不同在于它对每个子问题的解决方案都做出选择,不能回退。动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能。

贪心算法解决问题的步骤

第一步,当我们看到这类问题的时候,首先要联想到贪心算法:针对一组数据,我们定义了限制值和期望值,希望从中选出几个数据,在满足限制值的情况下,期望值最大。

第二步,我们尝试看下这个问题是否可以用贪心算法解决:每次选择当前情况下,在对限制值同等贡献量的情况下,对期望值贡献最大的数据。

第三步,我们举几个例子看下贪心算法产生的结果是否是最优的。

贪心算法实例

1,分糖果

有 m 个糖果和 n 个孩子。我们现在要把糖果分给这些孩子吃,但是糖果少,孩子多(m<n)。

所以糖果只能分配给一部分孩子。每个糖果的大小不等,这 m 个糖果的大小分别是 s1,s2,s3,……,sm。除此之外,每个孩子对糖果大小的需求也是不一样的,只有糖果的大小大于等于孩子的对糖果大小的需求的时候,孩子才得到满足。

假设这 n 个孩子对糖果大小的需求分别是 g1,g2,g3,……,gn。如何分配糖果,能尽可能满足最多数量的孩子?

2,钱币找零

这个问题在我们的日常生活中更加普遍。假设我们有 1 元、2 元、5 元、10 元、20 元、50 元、100 元这些面额的纸币,它们的张数分别是 c1、c2、c5、c10、c20、c50、c100。我们现在要用这些钱来支付 K 元,最少要用多少张纸币呢?

3,区间覆盖

假设我们有 n 个区间,区间的起始端点和结束端点分别是[l1, r1],[l2, r2],[l3, r3],……,[ln, rn]。我们从这 n 个区间中选出一部分区间,这部分区间满足两两不相交(端点相交的情况不算相交),最多能选出多少个区间呢?


http://lihuaxi.xjx100.cn/news/88140.html

相关文章

Java面试80%的人都会踩的坑,你知道几种?

最近很多朋友跟我吐槽&#xff0c;Java面试时遇到的问题&#xff0c;我选了几个经典的问题列举出来&#xff0c;顺便和大家聊一下我的看法&#xff1a; 问题展示 Java技术能力自以为还不错&#xff0c;但是到了面试的时候就凉凉&#xff1b; 对面试官提出的问题感觉很懵&…

韩国WA15-6819B高性能DSP数字功放芯片

WA15-6819B全数字音频包括立体声功率级芯片&#xff1b;采用拓扑结构电路&#xff1b;内置多重保护机制&#xff1b;音质饱满细腻&#xff1b;加入了ASRC&#xff08;异步采样率转化&#xff09;的功能&#xff0c;使得输入IIS的采样频率可从8kHz到192kHz自由无差别变化&#x…

【图像分割】基于改进的主动轮廓模型实现图像分割附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

刚入行的自媒体短视频创作者必须要了解的基础知识汇总-第一季

刚入行的自媒体短视频创作者必须要了解的基础知识汇总-第一季 大家好&#xff0c;我是我赢助手&#xff0c;专注于自媒体短视频去水印、去重和文案提取运营&#xff01; 我是自媒体行业的新手小白&#xff0c;很多的人问我关于短视频的问题&#xff0c;我也会一一给大家解答&…

北京外企 外服控股:人服国企借道资产重组上市

北京外企 &外服控股&#xff1a;人服国企借道资产重组上市&#xff0c;发 力数字化 谋新篇4.2.1 北京城乡&#xff1a;与北京外企资产置换在即&#xff0c;人服赛道再添巨头 7 月 28 日&#xff0c;证监会批复北京城乡与北京外企资产置换&#xff0c;并通过发行股份的方 式…

Easy Excel 使用总结

title: Easy Excel 使用总结 date: 2022-10-14 17:33:57 tags: Excel categories:开发技术及框架 cover: https://cover.png feature: false 1. 概述 官网地址&#xff1a;EasyExcel 官方文档 - 基于 Java 的 Excel 处理工具 | Easy Excel (alibaba.com) EasyExcel 是一个基…

Windows Server 2016 AD(一)用户禁用USB存储设备

1&#xff1a;登录域控制器&#xff0c;运行Active Directory用户和计算机&#xff0c;新建一个测试组织单元进行测试。 2&#xff1a;起名测试&#xff0c;确定完成。 3&#xff1a; 右键测试新建测试用户。 4&#xff1a;新建两个用户it3和it4,用于测试。 5&#xff1a;输入密…

Mybatis如何使用分页插件pageHelper

目录 1. 导入依赖&#xff1a; 2. mybatis-config.xml文件配置plugins标签 3. 如何在代码中使用 1). PageHelper.startPage 静态方法调用 2) PageHelper.startPage 静态方法返回值获取参数 3) lambda用法 3.1 返回Page 3.2 返回PageInfo&#xff0c;PageInfo包含了更加…