Python贪心算法

贪心算法

贪心算法

在对问题求解时,总是作出在当前看来是最好的选择。也就是说,不从整体上加以考虑,
它所作出的仅仅是在某种意义上的局部最优解(是否是全局最优,需要证明)。

最优装载问题

有一天海盗们截获了一艘装满各种各样古董的货船,每一件都价值连城,一旦打碎就是去了价值,
海盗船载重量为C,每件固定的重量为wi,海盗们该如何尽可能装载最多数量的古董呢?
算法设计
古董重量清单:
在这里插入图片描述

  1. 船载重量固定为C,只要每次选择重量最小的古董,直到不能再装为止,这样装载的古董数量最大,
    这就是贪心策略;
  2. 把古董按重量从小到大排序,根据策略选出尽可能多的古董。

代码实现

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


def max_ans(antique):
    anti_sort = sorted(antique)  # 对重量排序
    ans, tmp = 0, 0  # ans记录装载古董数量,tmp记录装载古董重量
    ship = []  # 记录装载的古董
    for a in anti_sort:
        tmp += a
        if tmp <= 30:
            ans += 1
            ship.append(a)
    print('装载古董数量:', ans)
    print('装载的古董', ship)


max_ans(antique)

你可能感兴趣的:(Python贪心算法)