Advertisement
pifka

Longest Increasing Subsequence

Sep 15th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace ConsoleApp4
  6. {
  7. public class Program
  8. {
  9. public static void Main()
  10. {
  11. var numbers = Console.ReadLine().Split().Select(int.Parse).ToArray();
  12.  
  13. var solutions = new int[numbers.Length];
  14. var maxSolution = 0;
  15. var prev = new int[numbers.Length];
  16. var maxSolutionIndex = 0;
  17.  
  18. for (int current = 0; current < numbers.Length; current++)
  19. {
  20. var solution = 1;
  21. var prevIndex = -1;
  22.  
  23. var currentNumber = numbers[current];
  24.  
  25. for (int solIndex = 0; solIndex < current; solIndex++)
  26. {
  27. var previosNumber = numbers[solIndex];
  28. var prevSolution = solutions[solIndex];
  29.  
  30. if (currentNumber > previosNumber
  31. && solution <= prevSolution)
  32. {
  33. solution = 1 + prevSolution;
  34. prevIndex = solIndex;
  35. }
  36. }
  37.  
  38. solutions[current] = solution;
  39. prev[current] = prevIndex;
  40.  
  41. if (solution > maxSolution)
  42. {
  43. maxSolution = solution;
  44. maxSolutionIndex = current;
  45. }
  46. }
  47.  
  48. var index = maxSolutionIndex;
  49.  
  50. var result = new List<int>();
  51.  
  52. while (index != -1)
  53. {
  54. var currentNumber = numbers[index];
  55. result.Add(currentNumber);
  56. index = prev[index];
  57. }
  58.  
  59. result.Reverse();
  60.  
  61. Console.WriteLine(string.Join(" ", result));
  62. }
  63. }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement