Advertisement
stanevplamen

02.1.18.LongestIncreasingOrder

May 22nd, 2013
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.87 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. class LongestIncreasingOrder
  5. {
  6.     static void Main()
  7.     {
  8.         Console.Write("Please enter the lenght of the array N = ");
  9.         int N = int.Parse(Console.ReadLine());
  10.        
  11.         List<int> nArray = new List<int>();
  12.  
  13.         for (int i = 0; i < N; i++)
  14.         {
  15.             Console.Write("Please enter the {0} member = ", i);
  16.             nArray.Add(int.Parse(Console.ReadLine()));
  17.         }
  18.        
  19.         int counter = 0;
  20.         int maxRepeatCounter = -1;
  21.         int lastRepeatCounter = int.MinValue;
  22.         int index = 0;
  23.         int lastIndex = 0;
  24.         int currentNumber = int.MinValue;
  25.         List<int> intTempList = new List<int>();
  26.         List<int> numbersList = new List<int>();
  27.         int iterationsNumber = (int)Math.Pow((double)2, nArray.Count);
  28.  
  29.         for (int i = 1; i <= (iterationsNumber - 1); i++)
  30.         {
  31.             currentNumber = int.MinValue;
  32.             for (int j = 0; j < nArray.Count; j++)
  33.             {
  34.                 int mask = 1 << j;
  35.                 int nAndMask = mask & i;
  36.                 int bit = nAndMask >> j;
  37.  
  38.                 if (bit == 1)
  39.                 {                
  40.                     if (nArray[j] >= currentNumber)
  41.                     {
  42.                         counter++;
  43.                         intTempList.Add(nArray[j]);
  44.                         if (maxRepeatCounter < counter)
  45.                         {
  46.                             maxRepeatCounter = counter;
  47.                             index = j - 1;
  48.                         }
  49.                     }
  50.                     else if (nArray[j] < currentNumber)
  51.                     {
  52.                         if (maxRepeatCounter < counter)
  53.                         {
  54.                             maxRepeatCounter = counter;
  55.                             index = j-1;
  56.                         }
  57.                         counter = 0;
  58.                     }
  59.                     currentNumber = nArray[j];
  60.                 }
  61.             }
  62.             if (lastRepeatCounter < maxRepeatCounter)
  63.             {
  64.                 lastRepeatCounter = maxRepeatCounter;
  65.                 lastIndex = index;
  66.                 numbersList = new List<int>(intTempList);
  67.                 intTempList = new List<int>();
  68.                 counter = 0;
  69.             }
  70.             else
  71.             {
  72.                 intTempList = new List<int>();
  73.                 counter = 0;
  74.             }
  75.         }
  76.  
  77.         Console.WriteLine("The entered array is: ");
  78.         foreach (var item in nArray)
  79.         {
  80.             Console.Write(item + " ");
  81.         }
  82.         Console.WriteLine();
  83.         Console.WriteLine(new string('-', 30));
  84.  
  85.         Console.WriteLine("The longest increasing order is: ");
  86.         foreach (var item in numbersList)
  87.         {
  88.             Console.Write(item + " ");
  89.         }
  90.         Console.WriteLine();
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement