在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 家庭恩爱祝福语简短英文
14 高考俄语祝福语大全简短
15 虎年祝福语 诗句唯美简短
16 生日婚礼祝福语简短精辟
17 虎年喝酒拜年祝福语简短
18 教师闺蜜祝福语简短