Advertisement
Guest User

Arrays 6 - IncreasingSequence

a guest
Jun 12th, 2013
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.82 KB | None | 0 0
  1. using System;
  2.  
  3. class MaxIncreasingSequence
  4. {
  5.     static void Main()
  6.     {
  7.         int[] arr = { 9, 6, 2, 7, 4, 7, 5, 6, 7, 8, 4 };
  8.         int[] len = new int[arr.Length];
  9.  
  10.         len[0] = 1;
  11.         int index = 0; // В тази променлива ще запазим индекса на последния елемент на най-голямата последователност
  12.         for (int x = 0; x < arr.Length; x++)
  13.         {
  14.             len[x] = 1;
  15.             for (int i = 0; i < x; i++)
  16.             {
  17.                 if (arr[i] < arr[x] && len[i] + 1 > len[x]) // Правим проверка за по малък елемент
  18.                 {
  19.                     len[x] = len[i] + 1;
  20.                 }
  21.             }
  22.             if (len[x] > len[index])
  23.             {
  24.                 index = x;
  25.             }
  26.         }
  27.  
  28.         Console.WriteLine("Longest sequence:"); // печатим редицата
  29.  
  30.         int prevIndex = index;            // Започваме от индекса на най-големия елемент
  31.         Console.Write(arr[index] + " ");  // Отпечатваме най-големия елемент
  32.  
  33.         // Вървим назад по елементите и печатим по-малките
  34.         for (; index >= 0; index--)
  35.         {
  36.             if (arr[index] < arr[prevIndex] && len[prevIndex] == len[index] + 1 )  // Проверяваме дали има по-малък елемент от последния намерен и дали дължните на последователностите съвпадат
  37.             {
  38.                 Console.Write(arr[index] + " ");
  39.                 prevIndex = index;  // Записваме индекса на новия последен елемент
  40.             }
  41.         }
  42.        
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement