【零基础】学python数据结构与算法笔记13-贪心算法
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
前言
学习python数据结构与算法学习常用的算法
b站学习链接
80.贪心算法新一章算法进阶
贪心算法又称贪婪算法是指对问题求解时总是做出在当前看来是最好的选择。也就是说不从整体最优上加以考虑他所做出的是在某种意义上的局部最优解。
贪心算法并不保证会得到最优解但是在某些问题上贪心算法的解就是最优解。要会判断一个问题能否用贪心算法来计算。
找零问题
从最大的面额找t默认是倒序的加入找零376元
最后3张1001张501张20一张5一张1。
81.分数背包
举例
对于0-1背包和分数背包贪心算法是否都能得到最优解
对于0-1背包首先看单位内的商品价值商品1单价6商品2单价5商品3单价4先拿最贵的商品1再拿商品2最后只剩下20kg装不下商品3最后拿到价值160的商品但这不是最优的最优的是220。
而对于分数背包都能装满所以可以得到最优解。
82.分数背包实现
w是背包的大小背包大小/最后商品的重量 为带走的分数几分之几的商品比如2/3铜沙
83.数字拼接问题
94 和32比的话 很好比位数相同94>32 就把94放前面
128 和1286比 1286128 1286在前
728和7286比 7287286 728在前
位数不同就不好比可以转换一下思路看哪个拼接后大就用哪个
a+b if a+b>b+a else b+a
84.数字拼接问题实现
也可以按照上面的思路自己用冒泡法交换排序这里用了python内置的函数实现。
这里是降序。
85.活动选择问题
贪心结论最先结束的活动一定是最优解的一部分
就是说我找最先结束的就是最优解里的开始前把活动按照最先结束的时间顺序升序排序。
先找第一个活动最后结束是4那我第二个活动不能找了它第三个开始的只能从第4个活动再开始。
86.活动选择问题实现
87.贪心算法总结
这些问题求解的都是最优解最多最大问题
而这些不能解决的比方说0-1背包问题我们下次讲动态规划来实现。
总结
学习了贪心算法的4个例子