0 - 1 Knapsack
import java.util.*;
class Solution {
public int solve(int[] weights, int[] values, int capacity) {
int n = values.length;
int[][] K = new int[n + 1][capacity + 1];
for(int i = 0; i <= n; i++) {
for(int j = 0; j <= capacity; j++) {
if (i == 0 || j == 0)
K[i][j] = 0;
else if (weights[i - 1] <= j)
K[i][j] = Math.max(values[i - 1] +
K[i - 1][j - weights[i - 1]],
K[i - 1][j]);
else
K[i][j] = K[i - 1][j];
}
}
return K[n][capacity];
}
}
Last updated