• 高级算法:贪心算法


    一、定义

    什么是贪心算法呢?所谓贪心算法是指,在对问题求解时,总是做出在当前看来最好的选择。也就是说,不从整体最优解出发来考虑,它所做出的仅是在某种意义上的局部最优解。
    贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题都能产生整体最优解或整体最优解的近似解。

    贪心算法的基本思路如下:

    1.建立数学模型来描述问题。

    2.把求解的问题分成若干个子问题。

    3.对每个子问题求解,得到每个子问题的局部最优解。

    4.把每个子问题的局部最优解合成为原来问题的一个解。

    实现该算法的过程:

    1. 从问题的某一初始状态出发;
    2. while 能朝给定总目标前进一步 do
    3. 求出可行解的一个解元素;
    4. 由所有解元素组合成问题的一个可行解;

    二、找零问题

    1、题目

    假设商店老板需要找零N元钱,钱币的面个有100元、50元、20元、5元、1元,如何找零使得所需钱币的数量最

    2、 实现代码

    money = [100,50,20,5,1]
    
    def change_money(x):
        change = [0,0,0,0,0]
        for i ,m in enumerate(money):
            change[i] = x // money[i]
            x = x % money[i]
        if x > 0:
            print("%s" % x)
        return change
    
    

    3、测试一

    1、输入98

    print(change_money(98))

    2、输出结果

    "C:Program FilesPython35python.exe" E:/工作目录/python/money_change.py
    [0, 1, 2, 1, 3]
    
    Process finished with exit code 0

    4、测试2

    1、输入0.5

    print(change_money(0.5))
    

    2、输出

    "C:Program FilesPython35python.exe" E:/工作目录/python/money_change.py
    还剩0.5
    [0.0, 0.0, 0.0, 0.0, 0.0]
    
    Process finished with exit code 0

    三、数字拼接游戏

    第一问:

     第二问

    四、贪心算法的其他应用

  • 相关阅读:
    SelectorQuery wx.createSelectorQuery()
    JavaScript获取服务器端时间的方法
    linux ftp 文件修改时间 ModifiedDate 与本地相差 8小时
    申请域名SSL证书-域名验证配置指南
    Python之pygame,从入门到精通(一)
    Anaconda介绍、安装及使用教程
    Git安装及控制台美化
    Redis Desktop Manager的下载及安装
    redis 访问 database
    Redis消息队列
  • 原文地址:https://www.cnblogs.com/luoahong/p/9722679.html
Copyright © 2020-2023  润新知