IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Интересная задача на рекурсию, Посл-ть из 3 символов
striker
сообщение 28.02.2007 22:24
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Нужна помощь в решении этой задачи:
Нужно записать с использованием рекурсии программу создания n-символьной последовательности, состоящей из совокупности трех символов (например: 0,1,2 или a,b,c), в которой нет двух смежных идентичных подпоследовательностей, например, послед-ти 2011 и 21012101 не удовлетворяют условию задачи, т.к. в первой рядом расположены два одинаковых элемента 1, а во второй – одинаковые подпоследовательности 2101.
Интересная только как тут задать условие повторения подпоследовательностей?
Предлагайте свои варианты решения.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов
volvo
сообщение 10.03.2007 21:04
Сообщение #2


Гость






Цитата
я делаю последовательности, но не состоящие из определенных символов.
Где в ПЕРВОНАЧАЛЬНОМ задании сказано, что в последовательности не должно быть каких-то символов? Я этого условия не обнаружил... Это во-первых.

Во-вторых, какой длины может быть последовательность? 6 символов? 7? 20? 120? чем больше будет это число, тем меньше у тебя шансов дождаться окончания работы программы, и тем большее значение приобретает оптимизация. Поэтому уточни, какое максимальное N может быть, потом я покажу, что надо делать...

Добавлено через 13 мин.
В частности, при N = 4 вполне возможно вот такое, например, решение:
const
n = 4;
chars: string = 'abc';

function check(s: string): boolean;
var
i, p: integer;
ok: boolean;

begin
ok := true;

for i := length(s) div 2 downto 1 do begin

for p := 1 to length(s) - 2 * i + 1 do
ok := ok and (copy(s, p, i) <> copy(s, p+i, i));

end;
check := ok;
end;

procedure generate(s: string);
var i: integer;
begin
if length(s) = n then begin
if check(s) then writeln(s)
end
else
if check(s) then
for i := 1 to length(chars) do generate(s + chars[i])
end;

begin
generate('');
end.

, программа отработает практически мгновенно... Однако при N = 22 эта программа будет работать уже больше 2-х секунд...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
striker   Интересная задача на рекурсию   28.02.2007 22:24
volvo   Вот это: const { s: string = '21012101';...   28.02.2007 22:38
striker   Если честно, не очень понял. Это только для послед...   1.03.2007 19:25
volvo   Ты спросил, как определять существует ли повторяющ...   1.03.2007 19:35
striker   1. Получается, что проверяется только повторение з...   2.03.2007 19:58
volvo   striker, ты внимательно прочел, что я написал? Про...   2.03.2007 20:15
striker   Нет, я делаю последовательности, но не состоящие и...   10.03.2007 20:58
volvo   Где в ПЕРВОНАЧАЛЬНОМ задании сказано, что в послед...   10.03.2007 21:04
striker   Как вывести полученную послед-ть на экран? Или она...   11.03.2007 18:18
volvo   :mad: А запустить программу не пробовал??? В обще...   11.03.2007 18:57
Michael_Rybak   Жестко. В общем, это ханойские башни. Между кажды...   12.03.2007 3:44
Гость   VOLVO, а сам Запускать не пробовал? Если бы попроб...   12.03.2007 21:30
Артемий2   Все прекрасно работает!!Ты бы убрал свою ...   12.03.2007 21:39
volvo   Заруби себе на носу! Я НИКОГДА, слышишь, НИКОГ...   13.03.2007 2:03


Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 13:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"