在Python中,通过将项目保存在一个包中来找到最大的价格

假设我们有两个数字列表。一种称为权重,另一种称为值。它们的长度相同。我们还有两个值,分别称为容量和计数。这里weights [i]和values [i]代表第i个项目的权重和值。我们最多可以容纳最多重量,最多可以容纳总数,并且每个项目只能复制一份,因此我们必须找到可以获取的最大价值。

因此,如果输入像权重= [2,2,4,6] 值= [15,15,20,35] 容量= 8 count = 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
猜你喜欢