Guest User

Untitled

a guest
Apr 25th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.73 KB | None | 0 0
  1. using System;
  2.  
  3. namespace P22.LongerIncreasingElementsSubArray
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             int[] intArray = { 6, 1, 4, 3, 0, 3, 6, 4, 5 };
  10.             int[] longerSubSequence = LongerSubSequence(intArray);
  11.             PrintIntArray(intArray);
  12.             int index = FindBiggestElementIndex(longerSubSequence);
  13.             string result = "}" + intArray[index];
  14.             for (int i = index - 1; i >= 0; i--)
  15.             {
  16.                 if (longerSubSequence[index] == longerSubSequence[i] + 1)
  17.                 {
  18.                     if (intArray[index] > intArray[i])
  19.                     {
  20.                         result = result + " ," + intArray[i];
  21.                         index = i;
  22.                     }
  23.                 }
  24.             }
  25.             result += '{';
  26.             result = InvertString(result);
  27.             Console.WriteLine(result);
  28.  
  29.            
  30.            // PrintIntArray(intArray);
  31.             //Console.Write("result -> ");
  32.             //PrintIntArray(longerSubSequence);
  33.         }
  34.        
  35.         private static int[] LongerSubSequence(int[] array)
  36.         {
  37.             int[] len = new int[array.Length];
  38.             for (int i = 0; i < len.Length; i++)
  39.             {
  40.                 len[i] = 1;
  41.             }
  42.             for (int i = 1; i < array.Length; i++)
  43.             {
  44.                 int prev = 0;
  45.                 int maxLen = 0;
  46.                 for (int j = 0; j < i; j++)
  47.                 {
  48.                     if (maxLen <= len[j])
  49.                     {
  50.                         maxLen = len[j];
  51.                         prev = j;
  52.                     }
  53.                     if (array[prev] < array[i])
  54.                     {
  55.                         len[i] = maxLen + 1;
  56.                     }
  57.                 }
  58.  
  59.             }
  60.             return len;
  61.         }
  62.  
  63.         private static void PrintIntArray(int[] pIntArray)
  64.         {
  65.             for (int i = 0; i < pIntArray.Length; i++)
  66.             {
  67.                 Console.Write("{0,5}",pIntArray[i]);
  68.             }
  69.             Console.WriteLine();
  70.         }
  71.  
  72.         private static int FindBiggestElementIndex(int[] array)
  73.         {
  74.  
  75.             int index = 0;
  76.             int maxValue = int.MinValue;
  77.             for (int i = 0; i < array.Length; i++)
  78.             {
  79.                 if (array[i] > maxValue)
  80.                 {
  81.                     maxValue = array[i];
  82.                     index = i;
  83.                 }
  84.             }
  85.             return index;
  86.         }
  87.  
  88.         public static string InvertString(string s)
  89.         {
  90.             char[] arr = s.ToCharArray();
  91.             Array.Reverse(arr);
  92.             return new string(arr);
  93.         }
  94.     }
  95. }
Add Comment
Please, Sign In to add comment