Advertisement
stanevplamen

02.01.18.LongestIncreasingSecuence

Jul 19th, 2013
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.02 KB | None | 0 0
  1.     using System;
  2.      
  3.     public static class LongestIncreasingSecuence
  4.     {
  5.         static void Main()
  6.         {
  7.             int arrayLength = 13;
  8.             int[] inputNumbers = { 3, 5, 4, 7, 6, -34, 8, 434, -34, 455, 0, 2, 4};
  9.             int maxLength = 1;
  10.             int bestEnd = 0;
  11.             int[] arrayPlus = new int[arrayLength];
  12.             int[] arrayMinus = new int[arrayLength];
  13.             arrayPlus[0] = 1;
  14.             arrayMinus[0] = -1;
  15.             for (int i = 1; i < arrayLength; i++)
  16.             {
  17.                 arrayPlus[i] = 1;
  18.                 arrayMinus[i] = -1;
  19.                 for (int j = i - 1; j >= 0; j--)
  20.                 {
  21.                     if (arrayPlus[j] + 1 > arrayPlus[i] && inputNumbers[j] < inputNumbers[i])
  22.                     {
  23.                         arrayPlus[i] = arrayPlus[j] + 1;
  24.                         arrayMinus[i] = j;
  25.                     }
  26.                 }
  27.                 if (arrayPlus[i] > maxLength)
  28.                 {
  29.                     bestEnd = i;
  30.                     maxLength = arrayPlus[i];
  31.                 }
  32.             }
  33.             Console.Write("Max length: " + maxLength);
  34.             Console.Write("\n");
  35.             Console.Write("Sequence end index: " + bestEnd);
  36.             Console.Write("\n");
  37.             Console.Write("Longest subsequence: ");
  38.             int currentBE = bestEnd;
  39.             int[] longestIncreasingSecuenceArray = new int[arrayLength];
  40.             int p = 0;
  41.             while (currentBE != -1)
  42.             {
  43.                 longestIncreasingSecuenceArray[p] = inputNumbers[currentBE];
  44.                 currentBE = arrayMinus[currentBE];
  45.                 p++;
  46.             }
  47.      
  48.             for (int i = longestIncreasingSecuenceArray.Length - 1; i >= 0; i--)
  49.             {
  50.                 if (longestIncreasingSecuenceArray[i] != 0)
  51.                 {
  52.                     Console.Write("{0} ", longestIncreasingSecuenceArray[i]);
  53.                 }
  54.             }
  55.             Console.Write("\n");
  56.         }
  57.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement