Problem · Dynamic Programming
0/1 Knapsack
Learn this problemProblem statement
You are given two arrays, weights and values, describing n items. Item i has weight weights[i] and value values[i].
Choose a subset of the items whose total weight is at most capacity. Each item may be chosen at most once. Return the maximum total value achievable.
Function
maximumKnapsackValue(weights: int[], values: int[], capacity: int) → intExamples
Example 1
weights = [1,3,4,5]values = [1,4,5,7]capacity = 7return = 9Choosing the items with weights 3 and 4 uses the full capacity and yields value 4 + 5 = 9.
Example 2
weights = [2,2,3]values = [6,10,12]capacity = 5return = 22The second and third items fit together and yield value 22.
Example 3
weights = [4,5]values = [8,9]capacity = 3return = 0No item fits, so the empty subset is optimal.
Constraints
0 <= weights.length = values.length <= 2001 <= weights[i] <= 100000 <= values[i] <= 10000000 <= capacity <= 10000- The maximum answer fits in a signed 32-bit integer.