高级算法:贪心算法

一、定义

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

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

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 Files\Python35\python.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 Files\Python35\python.exe" E:/工作目录/python/money_change.py
还剩0.5
[0.0, 0.0, 0.0, 0.0, 0.0]

Process finished with exit code 0

三、数字拼接游戏

第一问:

 第二问

四、贪心算法的其他应用

 

posted @ 2018-09-29 11:14  活的潇洒80  阅读(346)  评论(0编辑  收藏  举报