function knapsack(weights, values, capacity) {
let dp = new Array(weights.length + 1).fill(0).map(() => new Array(capacity + 1).fill(0));
for (let i = 1; i <= weights.length; i++) {
for (let j = 1; j <= capacity; j++) {
if (weights[i - 1] > j) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weights[i - 1]] + values[i - 1]);
}
}
}
return dp[weights.length][capacity];
}
const weights = [1, 3, 4];
const values = [15, 20, 30];
const capacity = 4;
console.log(knapsack(weights, values, capacity));