python--利用贪心策略实现背包问题

贪心算法是的思想是构造局部最优,难以顾全大局.它通常表现出的特点是:

1.无法保证求得的解是最优解;2.运用简单;3.算法的实现过程中,通常要用到排序。

能采用贪心算法求解最优解的问题,一般具有的重要性质为:最优子结构性质与贪心选择性质

最优子结构性质的含义是:问题的最优解包含其子问题的最优解


代码如下:

class goods:
    def __init__(self, name, weight=0, value=0):
        self.name = name
        self.weight = weight
        self.value = value
    def __repr__(self):
        return self.__str__()
    def __str__(self):
        return "('%s',%d,%.2f)" % (self.name, self.weight, self.value)

def knapsack(bag_volume=0, goods_set=[]):
    #利用lambda函数对goods_set以单位价值作为规则进行排序,由大到小排列
    goods_set.sort(key=lambda x: x.value / x.weight, reverse=True)
    result = []
    the_cost = 0
    for good in goods_set:
        if bag_volume < good.weight:
            break
        #如果存在空间,则将此商品装入背包即放进result中,同时修改背包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值