Возможно, вы слышали о хорошо известной проблеме нахождения самой длинной растущей подпоследовательности. Оптимальный алгоритм имеет сложность O(n*log(n)).
Я думал о проблеме нахождения all растущих подпоследовательностей в заданной последовательности. Я нашел решение проблемы, в которой нам нужно найти ряд растущих подпоследовательностей длины k, который имеет сложность O(n*k*log(n)) (где n - длина последовательности).
Конечно, этот алгоритм может быть использован для моей проблемы, но тогда решение имеет сложность O(n*k*log(n)*n) = O(n^2*k*log(n)), я полагаю. Я думаю, что должно быть лучшее (я имею ввиду - быстрее) решение, но пока не знаю.
Если вы знаете, как решить проблему нахождения всех возрастающих подпоследовательностей в заданной последовательности в оптимальном времени/сложности (в данном случае оптимальном = лучше, чем O(n^2*k*log(n))), пожалуйста, сообщите мне об этом.
В конце концов: эта проблема не является домашней работой. На моей лекции была упомянута проблема самой длинной возрастающей подпоследовательности, и я начал думать об общей идее всех возрастающих подпоследовательностей в заданной последовательности.
![DP[i] = 1 + \sum_{j < i, A[j] < A[i]} DP[j]](/img/cd2f0aaf738372e1e7bf3b642340259d.gif)