Все темы
62

Строим только те расстановки, что остаются законными

Tier 1Закрыто

Где применяется

1. Задача

Подмножества, перестановки и сочетания мы перебирали: пробовали каждую ветку и оставляли те, что дошли до конца. Отсечка в прошлом уроке смотрела только на количество: хватит ли оставшихся элементов. Теперь отсекать будем по правилу. Ветку бросают в тот момент, когда она нарушила ограничение, задолго до конца. Тогда силы не уходят на достройку расстановки, которая всё равно окажется неправильной.

Тебе нужны все правильные способы расставить n пар скобок. Для n = 2 это (()) и ()(). Строка )( неправильная: она закрывает скобку, которую не открывали. (() тоже неправильная: открытых скобок больше, чем закрытых.

Можно построить все строки длины 2n из ( и ) и отобрать правильные. Но для n = 6 это 4096 строк, а правильных среди них только 132. Лучше вообще не строить неправильные.

Этот шаг из платной части

Бесплатные шаги в начале курса (их 33) открыты всем: урок, задача и тесты. Этот шаг открывается с полным доступом. Начни с бесплатного аккаунта и бесплатных шагов.

Завести бесплатный аккаунтПосмотреть, что входит

На LeetCode

Задачи, где нужно построить только правильные строки или разбиения и правило можно проверить на полпути. Проверяй правило перед каждым шагом и обрывай ветку, как только оно нарушено.

Мы используем необходимые куки для работы сайта (вход и язык). Если ты согласишься, мы также загрузим Google Analytics, чтобы видеть, какие страницы читают, и Google reCAPTCHA для защиты форм обратной связи и сообщений об ошибке от спама. Политика конфиденциальности