LIS: самая длинная задача возрастающей подпоследовательности состоит в том, чтобы найти подпоследовательность заданной последовательности, в которой элементы подпоследовательности отсортированы в порядке от низшего к высшему.
Eg:
0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15
Самая длинная возрастающая подпоследовательность — это 0, 2, 6, 9, 13, 15.
Я могу разработать ЛИС, используя различные способы, такие как динамическое программирование и методы запоминания, но в конкретном случае мне нравится реализовывать ЛИС с использованием рекурсии со временной сложностью O(N^2)
.
На мой взгляд, используя рекурсию, мы не можем реализовать алгоритмы со сложностью времени O(N^2)
. (Пожалуйста, поправьте меня)
Однако я получил этот алгоритм от Google
Algorithm LIS(A,n,x)
1: if n = 0 then
2: return 0
3: m LIS(A; n -1; x)
4: if A[n] < x then
5: m =max(m; 1 + LIS(A; n-1;A[n]))
6: print(m)
Это алгоритм O(N^2)
?
Не могли бы вы объяснить?