贪心算法:贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。比如有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
浙公网安备 33010602011771号