前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >贪心算法-分数背包问题(Python实现)

贪心算法-分数背包问题(Python实现)

作者头像
手撕代码八百里
发布2020-07-29 09:55:58
1.7K0
发布2020-07-29 09:55:58
举报
文章被收录于专栏:猿计划
代码语言:javascript
复制
import ioTool

def beibao(s,m,b):
    bb = 0  # 现在的背包容量
    beibaoA = [] #放入背包的东西


    #循环的i的范围不能超过传过来的数量,并且背包的容量也不能超过预定的数量(例如:50,则只能小于等于50)
    i = 0
    while i < len(s) and bb<=b:
        #判断是否已经放入背包了
        if len(beibaoA)  != 0:
            #背包里现在没装,并且数量也不够
            if beibaoA.__contains__(s[i]) == False  and bb<b and (bb + s[i]) <= b:
                beibaoA.append(s[i])  # 暂存
                bb = bb + s[i]
            elif beibaoA.__contains__(s[i]) == False  and bb<b and (bb + s[i]) >= b:
                num = b - bb
                bb = bb + num
                beibaoA.append(num)
        else:
            beibaoA.append(s[i])  # 暂存
            bb = bb + s[i]
        i += 1
    return beibaoA,bb


if __name__ == '__main__':
    # 价值 / 重量    价值比从高低排序,,没超过往里装,超过了就不装了。  分数背包
    s = [ 10, 20, 30]  # 重量
    m = [60, 100, 120]  # 价值
    b = 50  # 背包总容量
    k = 0
    beibao  = beibao(s,m,b)
    print("背包中存入的:", beibao[0])
    print("背包的容量:", beibao[1])

    for i in range(len(s)):
        print("从:商品",i,"取:",beibao[0][i])

    ioTool.writeLine(beibao, "output2.txt")

结果

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档