贪心法——活动选择问题和背包问题

简介:         今天上午听了米老师讲的算法,感觉收获很多,对于算法更加有信心了。首先,先来宏观看一下:                      这三种算法总的来说,刚开始看的时候不知道怎么下手,但是看多了也会有那么一点儿感觉。



        今天上午听了米老师讲的算法,感觉收获很多,对于算法更加有信心了。首先,先来宏观看一下:

 

       




           这三种算法总的来说,刚开始看的时候不知道怎么下手,但是看多了也会有那么一点儿感觉。分治法是这三种算法里面都有的思想,动态规划和贪心都是将问题分解成子问题求解,但动态规划里面的子问题都带有联系,而贪心算法里面的子问题都相对独立,唯一不同的是,贪心算法要首先想出一个解决方案来构造求解最优解的过程。


     宏观介绍下算法后,来看看贪心算法的两个实例。


   一,活动选择问题


    

          


    解决方案:   

              对于活动的选择问题,我们求解过程是这样的,先把这些活动按照结束时间从早到晚排列,然后从第一个开始选择,如果第i个活动的开始时间比第i-1个活动的结束时间晚,我们就将此活动加入到解集合中。


       

    伪代码解读:



          递归方式求解:


   




            迭代方式求解:





   如果看完伪代码后还是没什么感觉,可以用下面的一些数据进行计算:

          


    



二,背包问题

 

       



   解决方案:


           因为可以部分装入背包,所以,我们将物品按照单位价值从大到小排序,依次选取,直到背包被装满为止。


 伪代码解读:


        


 


      

       小结,本来也想写写动态规划的伪代码注解的,but......我也不太懂,算法一直以来是我比较弱的地方,但是感觉研究起来,也是最有意思的,跪求大神参与讨论~~~~~~~

       

  



目录
相关文章
|
1月前
|
存储 算法
|
3月前
|
算法
【算法】贪心算法——柠檬水找零
【算法】贪心算法——柠檬水找零
|
算法 Java Python
深入理解动态规划算法 | 凑硬币
深入理解动态规划算法 | 凑硬币
128 0
|
算法 Java
动态规划算法-凑硬币
动态规划算法-凑硬币
114 0
|
算法 C语言
【软考总结】-<算法>动态规划法--0-1背包问题
在上篇博客中,我们讲了动态规划法在最长公共子序列问题中的应用,(详情请见博客《算法:动态规划法--最长公共子序列》)。这次学习了0-1背包问题,对动态规划法的思想理解了更深了一层,以下是我的简单理解,希望能为路过的读者带来帮助。
261 0
|
算法
算法简单题,吾辈重拳出击 - 动态规划之爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
|
缓存 算法
钞票找零-贪心,动态规划算法
钞票找零-贪心,动态规划算法
120 1
代码随想录刷题|完全背包理论基础 LeetCode 518. 零钱兑换II 377. 组合总和 Ⅳ(下)
代码随想录刷题|完全背包理论基础 LeetCode 518. 零钱兑换II 377. 组合总和 Ⅳ
代码随想录刷题|完全背包理论基础 LeetCode 518. 零钱兑换II 377. 组合总和 Ⅳ(上)
代码随想录刷题|完全背包理论基础 LeetCode 518. 零钱兑换II 377. 组合总和 Ⅳ
|
算法
分组背包问题与背包问题求具体方案(二)
AcWing算法提高课内容,本文讲解 动态规划
191 0
分组背包问题与背包问题求具体方案(二)
下一篇
无影云桌面