Online Node.js Compiler

const arr = [10, 2, 3, 4, 10]; const num = 3; const greatestSum = (arr, num) => { const sum = (arr = []) => arr.reduce((acc, num) => acc + num, 0) let matrix = new Array(num + 1).fill(0).map(() => new Array(arr.length + 1).fill(0)) for (let index = arr.length; index >= 0; index--) { const current = new Array(num + 1).fill(0).map(() => new Array(arr.length + 1).fill(0)) for (let currentK = num; currentK >= 0; currentK--) { for (let count = arr.length - 1; count >= 0; count--) { if (index === arr.length && currentK === num) { current[currentK][count] = 0 } else if (index < arr.length && currentK < num) { current[currentK][count] = Math.max( matrix[currentK][count + 1],matrix[currentK + 1][0] + sum(arr.slice(index - count, index + 1)) / (count + 1)) } else { current[currentK][count] = -Infinity } } } matrix = current } return matrix[0][0] } console.log(greatestSum(arr, num));