Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 18:58   #1
Mihail0
Новичок
Джуниор
 
Регистрация: 14.01.2010
Сообщений: 2
По умолчанию Olymp programming

Помогите, пожалуйста, решить задачу (сроки поджимают)

Скобки
Рассмотрим правильные скобочные последовательности, состоящие из трех видов скобок: круглых (), квадратных [] и угловых <>. Назовем последовательность хорошей, если между любой парой соответствующих друг другу открывающейся и закрывающейся круглых скобок не встречается квадратных скобок. Требуется подсчитать количество хороших последовательностей длины 2N (то есть состоящих из N пар скобок).
Входные данные
Во входном файле содержится одно число N (1 ≤ N ≤ 100).
Выходные данные
В выходной файл выведите искомое количество по модулю 27449.

Я не прошу код, подскажите как решать
Mihail0 вне форума Ответить с цитированием
Старый 14.01.2010, 19:19   #2
cherw9!40k
Пользователь
 
Аватар для cherw9!40k
 
Регистрация: 20.11.2009
Сообщений: 61
По умолчанию

То есть хорошие это [<()>], [(<>)], <[()]>, ну и еще такие как [(<)>] и т.д.
Мне кажется, надо зациклить поиск посимвольно (если принять, что скобка- это символ). Я так понял, что последовательность должна включать все три вида пар скобок. Создаем три boolean переменных - каждая отвечает за свой тип скобок(изначально все true). Когда при поиске попадается открывающая скобка = true, закрывающая = false. Если все три = false, значит найдена первая последовательность. Во время поиска неплохо было бы сообразить, как фиксировать индексы начала и конца последовательности. Когда первая последовательность найдена, проверяешь, является ли она хорошей. Отражаешь подсчет в счетчике.
cherw9!40k вне форума Ответить с цитированием
Старый 14.01.2010, 19:24   #3
Mihail0
Новичок
Джуниор
 
Регистрация: 14.01.2010
Сообщений: 2
По умолчанию

Да там чистая комбинаторика, не надо их даже генерировать (такое не прокатит, сложность растет экспоненциально)
Mihail0 вне форума Ответить с цитированием
Старый 14.01.2010, 21:14   #4
cherw9!40k
Пользователь
 
Аватар для cherw9!40k
 
Регистрация: 20.11.2009
Сообщений: 61
По умолчанию

Попробуй дать более развернутое условие, напиши, что сам сделал, а то информации недостаточно - очень непонятная задача.
cherw9!40k вне форума Ответить с цитированием
Старый 14.01.2010, 23:15   #5
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Довольно простенькая задача, мне кажется, что удобней всего ее делать именно динамикой (других простых и удобных/понятных решений и в голову не приходит).
Условие полное, можете посмотреть, это текущий заочный тур ВсеСиба.
Как раз поэтому не советовал бы писать сюда готовое полное решение, - так как задача играет роль в реальных соревнованиях, и этой помощью мы ставим участников в неравные условия.
Если говорить о способе решения - можно решать разными способами, мне больше всего нравятся динамика по подстроках и динамическое комбинирование разбиений.
LeBron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Runtime programming JoanM Общие вопросы Delphi 4 09.01.2008 11:00
Обсуждение programming... (кому не лень ответь те plize) }{@KeRnutyi Свободное общение 3 14.12.2006 19:50