美文网首页菜鸟学Python
贪心算法粗解及实例

贪心算法粗解及实例

作者: 爱吃西红柿嘛 | 来源:发表于2020-04-10 13:42 被阅读0次
学习前福利-猪头肉我给交了

文集列表:
自我修养--瞎写的故事
python--入门到放弃
杂七杂八--啥都有
操作系统--不要低估一颗底层的心
机器学习--入门槛超高
算法--笑而不语


正文

大部分算法基于以下四种思想:
1.动态规划
2.分而治之(递归思想)
3.贪心算法
4.暴力穷举


贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。假设一个问题比较复杂,暂时找不到全局最优解,那么我们可以考虑把原问题拆成几个小问题(分而治之思想),分别求每个小问题的最优解,再把这些“局部最优解”叠起来,就“当作”整个问题的最优解了。
贪心选择是采用从顶向下、以迭代的方法做出相继选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题。求最小生成树和Prim算法和Kruskal算法都是漂亮的贪心算法。

#实例1 找零钱问题:
#要求找零张数最少,输入价格,输出面额。
class Solution:
    def zhaoling(self, nums):
        money = [50, 20, 10, 5, 1]
        result = 100 - nums
        for i in money:
            if result >= i:
                count = result // i
                result = result - count * i
                print("{}元的{}张".format(i,count))
        else:
            print("找零完毕")
s = Solution()
print(s.zhaoling(52))
#实例2 分糖果问题:
#要求每人至少一个,评分比相邻高的糖果要多,
#输入评分列表,输出至少需要的糖果数
class Solution:
    def fentang(self, grade):
        result = [1]
        for index in range(1, len(grade)):
            if grade[index] > grade[index - 1]:
                result.append(result[index - 1] + 1)
            elif grade[index] < grade[index - 1]:
                result.append(result[index - 1] - 1)
            else:
                result.append(result[index - 1])
        judge = min(result)
        if judge <= 0:
            for index in range(0, len(result)):
                result[index] = result[index] + 1 - judge
        return result

s = Solution()
print(s.fentang([1, 2, 1]))
print(s.fentang([2, 1, 2]))
print(s.fentang([6,8,10,4,4,3,2,1]))

相关文章

  • 贪心算法粗解及实例

    文集列表:自我修养--瞎写的故事python--入门到放弃杂七杂八--啥都有操作系统--不要低估一颗底层的心机器学...

  • 贪心算法

    什么是贪心算法 贪心算法是一种求可行解的算法,它并不像遗传算法一样可以求出全局最优解,贪心算法只是为了求出可行解,...

  • 动态规划算法粗解及实例

    复试在即,为反向刺激努力学习,日更不能断,没得写怎么办,强行写技术,技术不会怎么办,强行学习。其实是打游戏被队友坑...

  • (3更)算法总结

    贪心算法 Q:什么是贪心算法? A:不管最后怎么样,先获得当前的最优解。所以贪心算法最后得到的解并不一定是最优解 ...

  • 贪心算法:使用贪心算法实现哈夫曼编码

    文章结构 如何理解贪心算法 贪心算法实例分析 使用贪心算法实现哈夫曼编码 源码地址 说明 算法中基本的算法思想有:...

  • 贪心算法-Python刷题笔记

    贪心算法 贪心选择:通过一系列的局部最优解达到整体最优解。 前提:必须证明贪心选择可以达到最优解:先证明整体最优解...

  • 漫步数据结构与算法系列之 贪心算法

    贪心算法是一种鼠目寸光的算法思路。算法的核心是,用局部最优解逼近全局最优解。是一种很简单粗暴的方式。 贪心算法,不...

  • 算法学习笔记——贪心算法

    动态规划和贪心算法的相同点和不同点 相同点:动态规划和贪心算法的都是一种递推算法,都是由局部最优解来推导全局最优解...

  • 贪心算法

    贪心算法 贪心算法是一种遵循近似解决问题的技术,通过每个阶段的局部最优选择(当前最好解),从而达到全局的最优解,它...

  • 算法导论笔记

    贪心算法 贪心算法:每一步在当时看起来是最佳的选择,总是做出局部最优的选择 贪心算法并不保证得到最优解,但对于很多...

网友评论

    本文标题:贪心算法粗解及实例

    本文链接:https://www.haomeiwen.com/subject/sakrmhtx.html