Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 52
от 10.05.2005, 16:00

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 2


Вопрос № 20488: Здрасти ув. эксперты. Помогите решить следующую задачку на тему "рекурсия": Имеется n населенных пунктов, пронумерованных от 1 до n. Некоторые пары пунктов соединены дорогами. Определить, можно ли попасть по этим дорогам из первого пунк...

Вопрос № 20488
Здрасти ув. эксперты. Помогите решить следующую задачку на тему "рекурсия":
Имеется n населенных пунктов, пронумерованных от 1 до n. Некоторые пары пунктов соединены дорогами. Определить, можно ли попасть по этим дорогам из первого пункта в n-ный. Информация о дорогах задается в виде последовательности пар чисел i и j (i<j) указывающих, что i-й и j-й пункты соединены дорогой.
Отправлен: 05.05.2005, 15:54
Вопрос задал: Игорь (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Ayl
Здравствуйте, Игорь!
Хм... Поиск маршрута в графе? Ну смотри.
Берем первый пункт. Помечаем его как пройденный. Выбираем любой из связанных с ним пунктов, не помеченных как пройденные. Ищем маршрут из нового пункта в конечный.
Т.е. у тебя должна быть рекурсивная функция, которая принимает в качестве параметров начальную и конечную вершины. Ищет непомеченные связанные вершины и вызывает себя с параметрами: новая вершина, конечная вершина.
Если новая вершина = конечная вершина - маршрут найден.
Если не найдена непомеченная вершина - возвращаем флаг не найденности маршрута.
Если первый вызов вернул "не найдено" - маршрута нет.
В приложении смотри набросок кода.

Приложение:

Ответ отправил: Ayl (статус: Профессор)
Отправлен: 05.05.2005, 17:36

Отвечает: dfdfdf
Здравствуйте, Игорь!
Мои соображения на эту тему: 1. (с требованием рекурсии)
функция (текущаяя точка, пункт назначения) : булевский
[
w:=false;
перебираем все пары с текущей точкой, если нашли что есть пара (тек. точка - пункт назначения) то то функция = истина если не нашли, то запускаем фунцию от каждой найденной пары к текущей точке. Если хоть одна вернула истину, то функция равна истина. Если же пар с тек. точкой нету или все вызовы функций вернули ложь то функция равна лжи.
]
2. Можно обойтись без рекурсии. Это делается с помощью битовых масок так:
Нумеруем все n вершин.
Упорядочеваем пары.
Делаем цикл от 1 до 2^n. (при этом если предствить число в двоичной системе, то можно положить что i`ый бит равный одному значит что это состояние есть в маршруте)
Далее анализируем на правильность маршрута.
P.S. Извиняюсь за простой язык, главное это понять как, а там реализовать на паскале дело плевое и зависит больше от вкусов.
Ответ отправил: dfdfdf (статус: 10-ый класс)
Отправлен: 05.05.2005, 18:09


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное