在Python中,通过将项目保存在一个包中来找到最大的价格
假设我们有两个数字列表。一种称为权重,另一种称为值。它们的长度相同。我们还有两个值,分别称为容量和计数。这里weights[i]和values[i]代表第i个项目的权重和值。我们最多可以容纳最多重量,最多可以容纳总数,并且每个项目只能复制一份,因此我们必须找到可以获取的最大价值。
因此,如果输入像权重=[2,2,4,6]值=[15,15,20,35]容量=8count=3,那么输出将是50,因为我们可以选择前3个项目,因为总重量为8。
示例
让我们看下面的实现以更好地理解-
class Solution:
def solve(self, weights, values, capacity, count):
items = list(zip(weights, values))
def dp(i, cp, ct):
if i == len(items) or ct == 0:
return 0.0
w, v = items[i]
ans = dp(i + 1, cp, ct)
if cp >= w:
ans = max(ans, dp(i + 1, cp - w, ct - 1) + v)
return ans
return int(dp(0, capacity, count))
ob = Solution()
weights = [2, 2, 4, 6]
values = [15, 15, 20, 35]
capacity = 8
count = 3
print(ob.solve(weights, values, capacity, count))输入值
[2, 2, 4, 6], [15, 15, 20, 35], 8, 3
输出结果
50
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短