Dynamic Programming - Maximum Value Contiguous Subsequence.
JavaScript
function sum(array, start, end) {
var total = 0;
for (var i = start; i <= end; i++) {
total += array[i];
}
return total;
}
var count = 0;
function maxSequence(array, start, end) {
if (end - start == 0) {
return array[start];
}
count++;
return Math.max(sum(array, start, end),
maxSequence(array, start + 1, end),
maxSequence(array, start, end - 1));
}
var input = [2, -1, 3];
console.log(maxSequence(input, 0, input.length-1));
//console.log(count);
function max(array) {
var maxEndingHere = 0,
maxSoFar = 0;
for (var i = array.length - 1; i >= 0; i--) {
maxEndingHere = Math.max(array[i] + maxEndingHere, 0);
maxSoFar = Math.max(maxEndingHere, maxSoFar);
}
return maxSoFar;
}
console.log(max(input));