<script>
var
MAX = 10;
function
maximizeSum(a , n , ind , k, dp)
{
if
(k == 0) {
if
(ind == n)
return
0;
else
return
-1000000000;
}
else
if
(ind == n)
return
-1000000000;
else
if
(dp[ind][k] != -1)
return
dp[ind][k];
else
{
var
ans = 0;
var
mini = a[ind];
for
(i = ind; i < n; i++) {
mini = Math.min(mini, a[i]);
ans = Math.max(ans,
maximizeSum(a, n, i + 1, k - 1, dp) + mini);
}
return
dp[ind][k] = ans;
}
}
var
a = [ 5, 7, 4, 2, 8, 1, 6 ];
var
k = 3;
var
n = a.length;
var
dp =
Array(MAX).fill().map(()=>Array(MAX).fill(0));
for
(
var
i = 0; i < MAX; i++) {
for
(j = 0; j < MAX; j++)
dp[i][j] = -1;
}
document.write(maximizeSum(a, n, 0, k, dp));
</script>