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

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

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

> рекурсивнвный подсчет как распределить мальчиков и девочек, у меня даже идеи нету как ее делать
maksimla
сообщение 9.11.2009 13:27
Сообщение #1


Знаток
****

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

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


В поездке ученики прибыли в n (0 < n ≤ 15) этажный дом. На одном этаже могут жить только одного пола дети.Учительница должда распределить их придерживаясь правилам с этажом нижей девочки могут жить над мальчиками и над девочками но мальчики могут жить только над девачками. На первом этаже могут жить и девачки и мальчики.
Напишите программу котоорая данным n написала сколько всго можит быть вариантов расселения учеников. Два разных варианта расселения считаются разными когда на одном сперва мальчики а потом девочки живут.
Первичные данные
3
результат
5
Обьяснение
когда n = 3 то тогда вариантов расселения есть 5 ддд,мдд,дмд,мдм,ддм.
Д это девачка М это мальчик.
Но ммд и дмм так неможит быть.
Я совсем нечего непридумал как надо сделать и как останавливать сам цикл может дадите идею как это так сделать


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 9.11.2009 14:03
Сообщение #2


Гость






Ну, так и пиши, по заданию:
function count(const n: integer; s: string): integer;
begin
if length(s) = n then begin { условие выхода: число этажей достигнуто }
writeln(s); count := 1;
end
else begin
if (s = '') or (s[length(s)] = 'f') then
{ или первый этаж, или над девочками - могут быть кто угодно }
count := count(n, s + 'm') + count(n, s + 'f')
else
{ над мальчиками - только девочки }
count := count(n, s + 'f');
end;
end;
Как вызвать - разберешься?

Это работает. Для 5 этажей выдает 13 комбинаций, для 12-ти этажей - 377, ... Разберись, как оно работает, и допиши программу...

Добавлено через 1 мин.
P.S. В принципе, можно, подобрать формулу, вычисляющую ответ без перебора (в общем-то оно и без подбора ясно: это все числа Фибоначчи), но у тебя в задании именно рекурсия, придется вычислять.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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