![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.11.2009
Сообщений: 40
|
![]()
15 мужчин 2 мальчика
лодка может перевозить или 1 мужчину,или 1 мальчика,или 2 мальчика. Помогите реализовать,очень срочно нужно,нашел код в учебнике на прологе но разобраться не могу! Жлеательно на Паскале помогите |
![]() |
![]() |
![]() |
#2 |
Begin'нер
Пользователь
Регистрация: 30.04.2010
Сообщений: 48
|
![]()
наркоман что ли?
![]() |
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
классическая задача о переправе..
Только, мне кажется, что условие НЕВЕРНО процитировано! имхо, должно быть: Цитата:
Или это на анимацию задача?!! o_O! Последний раз редактировалось Serge_Bliznykov; 12.10.2011 в 08:56. |
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]()
Серж, с таким условием она решается.
Цитата:
![]() Код:
Добавлю, на всяк пожарный случай: в TP оно по идее работать должно, но результат будет выдавать НЕВЕРНЫЙ. Чтобы все было нормально, нужно использовать компилятор с нуль-терминированными строками (их включает опция H+). Я проверял на FPC. И еще подправил по мелочи (в частности, выкинул отладочную печать).
Предпочитаю на "ты".
Последний раз редактировалось TinMan; 12.10.2011 в 09:50. |
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 09.11.2009
Сообщений: 40
|
![]()
Спасибо у меня 2 задачи было с "И" и "ИЛИ"
|
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Цитата:
Шаг 1: Два мальчика едут на другой берег, Шаг 2: один возвращается. Шаг 3: Потом солдат переправляется на другой берег. Шаг 4: Если на исходном берегу остались ещё солдаты, то Шаг 5: Второй мальчик возращается. Переход на шаг 1. Шаг 6. Иначе - все солдаты перевезены. Задача решена. |
||
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]()
Это, конечно, верно, но фишка-то в не том, чтоб решить, а в том, чтоб сделать программу, которая решает!
![]() В моем коде - не просто печать этих шагов. Там решение задачи посредством перебора через рекурсию. Можно задать другие числа - например, 10 мужчин и 4 мальчика (будет выдано первое встреченное решение, не все), или 5 мужчин и 1 мальчик (будет выдано, переправа невозможна). Я слишком спешил, когда постил решение, так что небольшие пояснения приведу сейчас (пока не забылись). Собственно, сам процесс перевоза нетрудно закодить, хотя я потратил все же прилично времени (больше часа), чтоб сделать наиболее компактно. Но самое интересное в том, что оно зациклилось.. Не из-за ошибки, а по смыслу. Например, один человек начинал ездить туда-обратно без особого толку )). Но это еще простой случай - иногда могут быть цыклы подлиннее. И тогда пришлось ввести дополнительные ограничения, и вот самое интересное было придумать их. Я до сих пор не уверен, что я поставил их правильно. Дело же в том, что, если размахнуться пошире и не заботиться о том, насколько сильны эти ограничения, то можно прийти просто к печати заданной последователности шагов - и решения как такового не будет.. Короче, я поставил два дополнительных ограничения: 1. мужчина не дожен ездить ОБРАТНО, раз прибыв на другой берег, он остается там; 2. только что приехавший мальчик (один) не должен тут же уезжать обратно (тоже один). Логически эти ограничения верны, конечно - ибо запрещенные действия как бы бессмысленны. Но все же я сомневаюсь в них - ведь в конечном итоге, бессмысленно ВСЕ, что не есть решение! Особенно сомневаюсь в первом, оно мне кажется слишком натянутым. Если кто-нибудь попробует придумать более естественные (менее искусственные))) ограничения, я буду очень рад взглянуть на них.
Предпочитаю на "ты".
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
3d модели солдат | Selestis | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 8 | 10.08.2010 00:11 |
Переправа через реку | mivel | Помощь студентам | 3 | 19.04.2010 21:41 |
Переправа | Spark3r | Общие вопросы C/C++ | 6 | 13.01.2010 12:35 |