1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
function resolve(items, maxHeavy) { const len = items.length const dp = new Array(len + 1) .fill(null) .map(() => new Array(maxHeavy + 1).fill(0))
for (let i = 0; i < len; i++) { for (let j = 0; j <= maxHeavy; j++) { if (j < items[i][0]) { dp[i + 1][j] = dp[i][j] } else { dp[i + 1][j] = Math.max( dp[i][j],
dp[i + 1][j - items[i][0]] + items[i][1], ) } } }
dp.forEach((i) => console.log(i.join(', ')))
return dp[len][maxHeavy] }
console.log( resolve( [ [3, 4], [4, 5], [2, 3], ], 7, ), )
|