Here's a solution in javascript 

var data = [10 , 20 , 30, -10 , -50 , 40 , -50, -1, -3];
function max(array) {
    var i = array[0];
    array.forEach(function(val) {
if(val > i)
i = val;
    });
    return i;
}
function maxSum(i, data, canSkip) {
   var len = data.length  - i;
   if( len === 1) {
       if(canSkip && data[i] < 0) {
           return 0;
       } else {
           return data[i];
       }
   } else if(len <1) {
      return 0;
   }
   var skippedI =  maxSum(i + 1, data, false);
   var notSkippedISkippedJ =  maxSum(i + 1, data, true) + data[i];
   var notSkippedINotSkippedJ =  maxSum(i + 2, data, false) + data[i] + 
(data[i+1] || 0);
   if(canSkip) {
return max([skippedI, notSkippedISkippedJ, notSkippedINotSkippedJ]);
   } else {
return max([notSkippedISkippedJ, notSkippedINotSkippedJ]);
   }
}

console.log(maxSum(0, data, false));

On Tuesday, March 24, 2015 at 6:47:46 AM UTC-7, atul007 wrote:
>
> Given a array with +ve and -ve integer , find the maximum sum such that 
> you are not allowed to skip 2 contiguous elements ( i.e you have to select 
> atleast one of them to move forward).
>
> eg :- 
>
> 10 , 20 , 30, -10 , -50 , 40 , -50, -1, -3
>
> Output : 10+20+30-10+40-1 = 89
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].

Reply via email to