贪婪算法入门之数列极差问题

本文介绍了贪婪算法的概念,强调了它适用于局部最优策略能导致全局最优的情况。通过对比动态规划,阐述了贪心算法的特点,并以数列极差问题为例,详细解析了解决过程。通过建立最大堆和最小堆,选择最小的两个数相乘加一,最终求得数列的最大极差。
摘要由CSDN通过智能技术生成

贪婪算法:

又称"贪心法".从问题的某一个初始解决出发逼近给定的目标,每一步都作一个不可回溯的决策,尽可能地求得最好的解.当达到某算法中的某一步不需要再继续前进时,算法停止.

算法适用的问题:

贪心算法面对问题只考虑当前局部信息就要做出决策,也就是说适用于"局部最优策略能导致产生全局最优".

思考:那么它和动态规划都是求最优解,区别在哪里?

不明白可以看这篇博文:https://blog.csdn.net/suoyudong/article/details/89298229

算法框架:

从某一个初始解出发;

while(能朝给定目标前进一步)

        利用可行的策略,求出可行解的一个元素

由所有的可行解元素组成一个可行解.

例子:

数列极差问题:

在黑板上写了n个正整数排成的一个数列,进行如下操作:每次擦去其中的两个数a,b
然后在数列中加入一个数a*b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,
最大的记作max,最小的记作min,则该数列的极差定义为m=max-min

算法分析:

每次要擦去两个数字,如果要得到最终max,我们是不是应该在每次选择的时候要选择最大或者最小的两个数(贪心策略),然后将其相乘+1放入之中.

再分析一下我们应该选取什么样的数据结构,以及这个过程是怎样的?

1)每次选取最大或者最

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值