【python练习笔记】神秘的王宫

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

输入描述:

宝贝价值:6,3,5,4,6

宝贝重量:2,2,6,5,4

小偷背包容量:10

输出描述:

偷到宝贝的总价值:15

示例1

输入

6,3,5,4,6

2,2,6,5,4

10

输出

15

def situation(m, n):
    if n - m == 0:
        return 1
    loop = m
    p1 = 1
    p2 = 1
    while loop > 0:
        p1 *= n
        n -= 1
        loop -= 1
    while m > 0:
        p2 *= m
        m -= 1
    return int(p1 / p2)

def getMore():
    lv = [6, 3, 5, 4, 6]
    lw = [2, 2, 6, 5, 4]
    bag = 10
    v_max = 0
    maxArr = []
    length = len(lw)
    for i in range(2, length):
        for j in range(situation(i, length) ** 2):
            indexArr = sample(list(range(length)), k=i)
            w_sum = 0
            v_sum = 0
            for k in indexArr:
                w_sum += lw[k]
                v_sum += lv[k]
            if w_sum <= bag and v_sum > v_max:
                v_max = v_sum
                maxArr = indexArr
    return v_max, maxArr

for i in range(100):
    maxGet = getMore()
    print("maxGet-->", maxGet)

运行结果:

maxGet--> (15, [1, 0, 4])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [1, 0, 4])
maxGet--> (15, [0, 1, 4])
maxGet--> (15, [0, 4, 1])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [4, 0, 1])
maxGet--> (15, [4, 1, 0])
maxGet--> (15, [1, 4, 0])
maxGet--> (15, [0, 1, 4])

 

转载于:https://www.cnblogs.com/smoggy/p/10633022.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值