Advertisement
malixds_

18

Jan 16th, 2023
778
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.29 KB | None | 0 0
  1. class Main
  2. {
  3.     // Функция для нахождения длины самой длинной убывающей подпоследовательности
  4.     // подмассива `nums[i…n)`
  5.     public static int LDS(int[] nums, int i, int prev)
  6.     {
  7.         // Базовый случай: ничего не осталось
  8.         if (i == nums.length) {
  9.             return 0;
  10.         }
  11.  
  12.         // случай 1: исключить текущий элемент и обработать
  13.         // оставшиеся элементы
  14.         int excl = LDS(nums, i + 1, prev);
  15.  
  16.         // случай 2: включить текущий элемент, если он меньше
  17.         // чем предыдущий элемент в LDS
  18.         int incl = 0;
  19.         if (nums[i] < prev) {
  20.             incl = 1 + LDS(nums, i + 1, nums[i]);
  21.         }
  22.  
  23.         // вернуть максимум из двух вышеперечисленных вариантов
  24.         return Integer.max(incl, excl);
  25.     }
  26.  
  27.     public static void main(String[] args)
  28.     {
  29.         int[] nums = { 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15 };
  30.  
  31.         System.out.println("The length of the LDS is " +
  32.                     LDS(nums, 0, Integer.MAX_VALUE));
  33.     }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement