<script>
function
calculatePresumArray(presum,arr,n,k)
{
for
(let i = 0; i < k; i++)
presum[0] += arr[i];
for
(let i = 1; i <= n - k; i++)
presum[i] += presum[i - 1] + arr[i + k - 1] -
arr[i - 1];
}
function
maxSumMnonOverlappingSubarray(presum,m,size,k,start)
{
if
(m == 0)
return
0;
if
(start > size - 1)
return
0;
let mx = 0;
let includeMax = presum[start] +
maxSumMnonOverlappingSubarray(presum,
m - 1, size, k, start + k);
let excludeMax =
maxSumMnonOverlappingSubarray(presum,
m, size, k, start + 1);
return
Math.max(includeMax, excludeMax);
}
let arr=[2, 10, 7, 18, 5, 33, 0];
let n = arr.length;
let m = 3, k = 1;
let presum =
new
Array(n + 1 - k) ;
for
(let i = 0; i < presum.length; i++)
{
presum[i] = 0;
}
calculatePresumArray(presum, arr, n, k);
document.write(maxSumMnonOverlappingSubarray(presum,
m, n + 1 - k, k, 0));
</script>