栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python:小偷来到了一个神秘的王宫,突然眼前一亮,发现5个宝贝,每个宝贝的价值都不一样,且重量也不一样,但是小偷的背包携带重量有限,所以他不得不在宝贝中做出选择,才能使偷到的财富最大,请你帮助小偷

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python:小偷来到了一个神秘的王宫,突然眼前一亮,发现5个宝贝,每个宝贝的价值都不一样,且重量也不一样,但是小偷的背包携带重量有限,所以他不得不在宝贝中做出选择,才能使偷到的财富最大,请你帮助小偷

题目描述:小偷来到了一个神秘的王宫,突然眼前一亮,发现5个宝贝,每个宝贝的价值都不一样,且重量也不一样,但是小偷的背包携带重量有限,所以他不得不在宝贝中做出选择,才能使偷到的财富最大,请你帮助小偷计算一下。
输入描述:
宝贝价值:6,3,5,4,6
宝贝重量:2,2,6,5,4
小偷背包容量:10
输出描述:
偷到宝贝的总价值:15

暴力解法思路:

1、将宝贝价值、宝贝重量分别作为两个列表

2、做压缩处理(zip方法):ziplist = list(zip(val,wei))

3、暴力解法的核心  O(∩_∩)O哈哈~:使用迭代器itertools中的组合模块combinations,从列表中ziplist 取1个,2个,3个....len(ziplist)个。并存放在alllsit中;

4、遍历alllist,将满足小偷背包容量的数据存在res列表中;

5、最后返回res中最大值即可。

def xiaoTou():
    val = [6,3,5,4,6]
    wei = [2,2,6,5,4]
    target = 10
    ziplist = list(zip(val,wei))
    import itertools
    alllist = []
    for i in range(1,len(ziplist)+1):
        tmp = list(itertools.combinations(ziplist,i))
        for j in tmp:
            alllist.append(j)
    res = []
    for i in alllist:
        sumwei = 0
        sumval = 0
        for j in range(len(i)):
            sumwei += i[j][1]
            sumval += i[j][0]
        if sumwei <= target:
            res.append(sumval)
    print(max(res))

超级暴力的解法,希望能帮到大家,祝顺利欧! 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/917911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号