zoukankan      html  css  js  c++  java
  • 高级算法:贪心算法

    一、定义

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

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

    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

    三、数字拼接游戏

    第一问:

     第二问

    四、贪心算法的其他应用

  • 相关阅读:
    ATS项目更新(1) CC视图与备份路径同步
    IP地址的正则表达式
    python下载图片(2)
    NS2网络模拟(2)丢包率
    NS2网络模拟(7)homework03.tcl
    python 教程 第二十二章、 其它应用
    python 教程 第十九章、 图形界面编程
    python中string的操作函数
    python中对文件、文件夹的操作
    HTTP状态码(HTTP Status Code)
  • 原文地址:https://www.cnblogs.com/luoahong/p/9722679.html
Copyright © 2011-2022 走看看