我的算法笔记 | 贪心算法理论知识(上)

本文介绍了贪心算法的基本概念和求解步骤,强调了贪心策略的选择和验证的重要性。通过一个会议室调度问题展示了如何运用贪心算法寻找最优解,并提出按照不同标准如最早开始时间、间隔时间和利润高低等进行尝试。同时,建议通过实验比较贪心策略的有效性,而非过分关注证明。学习贪心算法有助于解决实际问题中的优化问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贪心算法

1)最自然的算法(在当前形势下取最优)

2)用一种局部最功利的标准,总是做出在当前看来是最好的选择

3)难点在于证明局部最功利的标准可以得到全局最优解

贪心算法无法得到最优解的例子:

  • [ 矩阵往返一次的最大路径和 ]
    在这里插入图片描述

贪心算法求解的标准过程

1,分析业务

2,根据业务逻辑找到不同的贪心策略

3,对于能举出反例的策略直接跳过,不能举出反例的策略要证明有效性

贪心算法的解题套路

1,实现一个不依靠贪心策略的解法X,可以用最暴力的尝试

2,脑补出贪心策略A、贪心策略B、贪心策略C…

3,用解法X和对数器,用实验的方式得知哪个贪心策略正确

4,不要去纠结贪心策略的证明

例题

会议室能容纳的最多宣讲场次:
一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。给出了每一个项目开始的时间和结束的时间
你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。
返回最多的宣讲场次。

输入:

正数数组costs、正数数组profits、正数K、正数M
costs[i]表示i号项目的花费
profits[i]表示i号项目在扣除花费之后还能挣到的钱(利润)
K表示你只能串行的最多做k个项目
M表示你初始的资金

说明: 每做完一个项目,马上获得的收益,可以支持你去做下一个项目。不能并行的做项目。

输出:你最后获得的最大钱数。

解题思路:

举例不同的标准来进行贪心。按照最早开始时间安排?按照间隔时间最短的来安排?按照利润最高的来安排?

下集继续~

PS:学习内容:左神算法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值