Рассмотрим B как последовательность группировки символов (,), [,], {и}. B называется сбалансированной последовательностью, если она имеет длину 0 или B имеет одну из следующих форм: {X} Y или [X] Y или {X} Y, где X и Y сбалансированы. Пример для сбалансированного:() - {[]()} [] - ...Группировка символов Максимальная длина Сбалансированная подпоследовательность
Теперь вопрос заключается в том, чтобы найти эффективный алгоритм для нахождения максимально сбалансированной длины подпоследовательности (не обязательно непрерывной) заданного ввода, который является строка этих символов группировки.
Например, если вход () {([)] {(])}} [], одна из подпоследовательностей макс-длина () {[] {()}} []
Я почти уверен, что это решение DP, но в любом случае я его решаю. Я нахожу примеры, в которых мой алгоритм не работает. есть только один подход, о котором я уверен, что представляет собой комбинацию DP и Divide и Conquer. Но это не эффективно, потому что так или иначе D & C часть будет решать некоторые проблемы перекрытия снова и снова.
Так как я получаю его диапазон для k должен быть L + 2 <= k <= R. Но что, если L соответствует L + 1, и это часть ответа? – Nima
@Nima Я предполагаю, что мы можем использовать пустой диапазон с L> R (для него ответ равен нулю). Это позволяет нам избежать этого случая специально. – kraskevich
Ускорение неравенства в четырехугольниках Кнута-Яо относится к этой проблеме, верно? Итак, вы можете сделать это в O (n^2)? – harold