Олимпиадное задание по комбинаторике

У меня вопрос на счет возможных вариантов размещения скобок разными способами. В чем суть: У меня дано N открытых и N закрытых скобок. Нужно посчитать количество разных вариантов закрытия скобок, при том, что возможно K разных стилей скобок((), [], {} т.д.)

Например: N = 2, K = 2; — ([ ]), [()], т.д. - как результат мы получили такие варианты (всего их 8))

Вопрос к вам: Какая формула решения этой задачи или вообщем алгоритм?


Ответы (1 шт):

Автор решения: Harry

Если не ошибаюсь, то исходим из того, что правильных скобочных расстановок из N пар скобок можно сделать в количестве чисел Каталана:

введите сюда описание изображения

Если разновидностей скобок K, то для каждой расстановки мы их можем расставить введите сюда описание изображения способами.

Итого общее количество -

введите сюда описание изображения

способов правильных расстановок.

Для N=2, K=2: 2^2*(6-4)=4*2=8...

"По-моему, так." (с) Пух

Литература: Д.Кнут, Искусство программирования, т.4а, раздел 7.2.1.6.

Поскольку вопрос о генерации всех расстановок скобок не ставился, код не писал.

→ Ссылка