Advertisement
Valleri

Max Increasing Sequence - Dynamic Programming

Aug 6th, 2014
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function maxIncreasingSeq() {
  2.     var sequence = [2, 4, 3, 5, 1, 7, 6, 9, 8, 102, 11, 12, 13, 15 ,17, 18];
  3.     var length = [1];
  4.     var predecessor = [-1];
  5.     var maxLength = 1;
  6.  
  7.     for (var i = 1; i < sequence.length; i++) {
  8.         var currElement = sequence[i];
  9.         length[i] = 1;
  10.         var onlyFirstTime = true;
  11.         predecessor[i] = -1;
  12.         for (var j = i-1; j >= 0; j--) {
  13.             if(sequence[j] < currElement) {
  14.                 if(maxLength <= length[j] + 1) {
  15.                     maxLength = length[j] + 1;
  16.                     if(onlyFirstTime) {
  17.                         predecessor[i] = j;
  18.                         onlyFirstTime = false;
  19.                     }
  20.                 }
  21.                 length[i] = maxLength;
  22.  
  23.             }
  24.         }
  25.     }
  26.  
  27.     console.log(length);
  28.     console.log(predecessor);
  29.  
  30.     console.log("Max Length is: %d", length[length.length-1]);
  31.     console.log("The array is: ");
  32.     var maxSequence = [];
  33.  
  34.     Array.prototype.max = function () {
  35.         return Math.max.apply(null, this);
  36.     }
  37.  
  38.     var initialIndex = length.indexOf(length.max());
  39.     maxSequence.push(sequence[initialIndex]);
  40.     var initialPredecessor = predecessor[initialIndex];
  41.  
  42.     while(maxSequence.length != length[length.length-1]) {
  43.         maxSequence.push(sequence[initialPredecessor]);
  44.         initialPredecessor = predecessor[initialPredecessor];
  45.     }
  46.  
  47.     console.log(maxSequence);
  48. }
  49.  
  50. maxIncreasingSeq();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement