我理解的贪心

90 阅读2分钟

前言

贪心作为一个非常好用的一个算法思想,一直受到大家的喜爱。而我今天也在这里介绍一下这个算法,结合一下今天的每日一题。

我的理解

首先这个贪心肯定是与动态规划有关的,只不过动态规划是子问题得所有解聚在一起,然后根据所有子问题的解推断更大问题的解(我们可以理解为记忆化搜索+深度遍历搜索)。贪心也是这样的,只不过他的做法是根据当前子问题得最优解,一直推断下去就是最终问题的解。贪心是在我们生活中比较常见的思想。比如说我一个月怎么才能赚最多的钱(每天赚的钱都是相互独立的),正常的回答肯定是肯定是每一天都要赚最多的钱,这样做的话最后一定赚的是最多的钱。我们可以证明一下这个结论,贪心一般使用反证法来证明自己。我们可以说有一天我没有赚最多的钱,那他最后的赚的钱肯定会小于前者。证明成功!!!但是贪心的一大难点就是证明找到局部最优推出全局最优。

实战演练

leetcode.cn/problems/re…

image.png

这个一开始我是想用dfs一个一个试或者使用dp干掉他,但是数据范围是10的五次方,于是果断放弃了(因为这两个都是需要数据量比较小的),所以我想了一下就直接直接确定为0或一就好,本来是没有什么限制的,但是我们要注意二的个数,我们首要的就是要构造2,所以不能无脑放。所以我们就找到一个构造贪心的机会。具体代码题解如下。 leetcode.cn/problems/re…