ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 102779
Условие
Задан шаблон, состоящий из круглых скобок и
знаков вопроса. Требуется определить,
сколькими способами можно заменить знаки
вопроса круглыми скобками так, чтобы
получилось правильное скобочное выражение. Решение
Скачать архив тестов и решений Обозначим через F(k, c) количество скобочных последовательностей s длины k, подходящих под первые k символов шаблона и таких, что ci(s) ≥ 0 для всех i от 1 до k, а ck(s) = c. Очевидно, что ответом на исходную задачу будет являться число F(N, 0), где N - длина заданного шаблона. Рассмотрим задачу вычисления чисел F(k, c). Если k-й символ шаблона -открывающая скобка, то F(k, c) = F(k-1, c-1), если закрывающая, то F(k, c) = F(k-1, c+1). Если же это знак вопроса, то на его место можно поставить как открывающую, так и закрывающую скобку, и F(k, c) = F(k-1, c-1) + F(k-1, c+1). Получив эту формулу, задаем граничные значения F(0, c) = 0, F(k, -1) = 0,
F(0, 0) = 1 и двумя вложенными циклами (внешний – по k, а внутренний – по
c) последовательно вычисляем искомые числа F(k, c) для всех k от 1 до N и всех
c от 0 до N. Значение F(N, 0) выводим в качестве ответа.
Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|
![]() |
Проект осуществляется при поддержке