学习贪心算法

一、贪心算法思想

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解

二、什么时候采用贪心算法

1.最优子结构性质

当一个问题的最优解一定包含其子问题的最优解时,称此问题具有最优子结构性质。如何理解?换句话说:最优解一定是子问题的最优解组合而成的。没有这条性质,求出的最优解一定不是最优解,所以这才是重中之重。这也是动态规划问题的基石。

2.贪心选择性质

贪心选择性质时指所求问题的整体最优解可以通过一系列局部最优的选择获得,即通过一系列的逐步局部最优选择使得问题最终的选择方案是全局最优的。

三、利用贪心法求解问题的过程通常包含三个步骤

1.分解

将原问题分解为若干个相互独立的阶段。 

2.解决

对于每个阶段依据贪心策略进行贪心选择,求出局部的最优解。

3.合并

将各个阶段的解,合并为原问题的一个可行解。

四、贪心策略的选择

1.盛水最多的容器

盛最多水的容器——LeetCode_AllenC6的博客-CSDN博客盛最多水的容器、贪心算法、LeetCodehttps://blog.csdn.net/m0_37707561/article/details/125504342这个题目就是用的贪心算法:

贪心策略:

首先明确一点,这个容器的高以两个边中更小的那个边为准(木桶原理)

从两边开始,每次都选两条边更小的那个,往中间移动一位,因为更小的这个后面有可能有比它更大的,这样就可能出现比当前更大的容器。

最后你会发现,贪心策略筛选出的最大容器,正好是这些所有组合中最大的,这就叫整体最优解可以通过一系列局部最优的选择

 2.钱币找零

假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元,至少要用多少张纸币?

贪心策略: 用贪心算法的思想,很显然,每一步尽可能用面值大的纸币即可.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值