![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 25.06.2014
Сообщений: 1
|
![]()
Помогите найти решение к этой задаче(желательно код):
В сообщении, состоящем из одних русских букв и пробелов, каждую букву заменили ее порядковым номером в русском алфавите (А - 1, Б - 2, ..., Я - 33), а символ пробел - нулем. Требуется написать программу, которая по заданной последовательности цифр (не более 100) находит количество исходных сообщений, из которых она могла бы получиться. Очень надеюсь на вашу помощь! |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,427
|
![]()
Зачем искать, время терять? Быстрее же написать его
![]() В простейшем случае понадобится 3 глобальных переменных (для строки, для длины строки, для счетчика исходных сообщений) и немного знаний о рекурсии. Имея строку и текущий индекс в ней (сначала равный единице), "откусываем" 1 символ, а если возможно, то два. После чего опять вызываем ту же функцию, но с новым индексом, продвигаясь по строке (вызов осуществляется и после 1, и после 2 "откусанных" символов). Если строка кончилась, то увеличиваем глобальный счетчик. В конце работы программы печатаем глобальный счетчик. Ждем Ваших наработок.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
задача олимпиадная.
Рекурсивное решение для больших строк получается чрезвычайно неэффективное и затратное (как по требованиям к размеру стека, так и требования к времени вычислений). Если это нужно для сдачи решения в онлайн систему проверки, то решение с рекурсией НЕ ПРОКАТИТ!!! Решать задачу нужно с помощью динамического программирования. Как написано уважаемым LeBron тут - Delphi.Динамическое программирование но, кода решения там нет!! Там только описание подхода к решению задачи! ну и вдогонку. Если кому-то интересно неэффективное решение через рекурсию (upd. по алгоритму описанному чуть выше), то вот оно: Код:
Последний раз редактировалось Serge_Bliznykov; 25.06.2014 в 16:47. Причина: исправил код рекурсии - убрал передачу строки в стек... |
![]() |
![]() |
![]() |
#4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,427
|
![]()
Serge_Bliznykov, спасибо, нужно будет в свободное время уделить больше внимания динамическому программированию.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шифрование текста | Dushka | Visual C++ | 2 | 13.10.2011 11:29 |
шифрование текста | Lolipo | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 28.10.2010 10:10 |
Шифрование текста | Lepricon69 | Общие вопросы Delphi | 3 | 27.10.2010 11:52 |
шифрование текста | Sparky | Помощь студентам | 2 | 01.06.2010 18:24 |
Шифрование текста | SoundMan | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 15.08.2008 22:39 |