贪心算法:贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。比如有5张纸币,5,10,2,1,50,100,让你拿两张,你会怎么选择呢,你肯定会选择100,50,的这就是贪心;

 

贪心入门题1-装载问题

有一天海盗截获了一艘装满各种各样的古董的船,有8个古董,每个古董的价值都一样,每个古董的重量为,4,10,7,11,3,5,14,2,但是海盗船的载重量为30,古董不能打碎,你该如何装这些古董?

解题思路:1,把数据存到列表 中

    2.排序

    3.按顺序取值相加不超过30

代码:

a=[4,10,7,11,3,5,14,2]

a.sort()
tmp=0
tm=0
for i in a:
    tmp += i
    if tmp<=30:
        tm+=1
        print(i)
print('装载的数量为%s'%tm)

结果:


2
3
4
5
7

装载的数量为5

贪心入门题2背包问题

有一天阿里巴巴赶着一头毛驴上山去砍材,发现了四十大盗的藏宝洞,阿里巴巴想把财宝运走分给穷人,藏宝洞中有10种宝物,每种宝物的价值和重量如下,毛驴载重为30,宝物可以打碎,求如何得到宝物价值的最大化

编号    1    2    3    4    5    6    7    8    9    10
重量    4    2    9    5    5    8    5    4    5    5
价值    3    8    18    6    8    20    5    6    7    15
posted on 2018-06-19 13:24  程序员一学徒  阅读(192)  评论(0)    收藏  举报