![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Cool_abc |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Кирилл Репутация: ![]() ![]() ![]() |
Текст задачи:
Имеется N населенных пунктов, пронумерованных от 1 до N (N = 10). Некоторые пары пунктов соединены дорогами. Определить, можно ли по дорогам попасть из пункта 1 в N-й пункт. Информация о дорогах задается в виде последовательности пар чисел i и j (i < j), указывающих что i-й и j-й пункты соединены дорогой. Признак конца этой последовательности – пара нулей. Из условия я вынес 1 из основных положений, что по кругу между пунктами мы ходить не будем, т.е. например 1-2-3-5-6-1 (- догора), задача после этого сущаственно упростилась:) написал, но не работает прога, помогите плиз найти ошибку.. или мот я в корне был не прав.. наставьте на путь правильный Мой код:
первый проход вынес в основную программу, т.к. нужно было сделать 1 проход по всем x(i,1)=1, т.е. тем. у которых первый пункт - наш начальный и в процедуре в стоке "if x[A,2]=x[i,1] then .." не смог бы подставить вместо x[i,1] единицу |
![]() ![]() |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
наставьте на путь правильный ... первый проход вынес в основную программу, т.к. нужно было сделать 1 проход по всем x(i,1)=1, т.е. тем. у которых первый пункт - наш начальный и в процедуре в стоке "if x[A,2]=x[i,1] then .." не смог бы подставить вместо x[i,1] единицу Cool_abc, подобные вещи в рекурсии - первый признак, что что-то не так. Рекурсия должна быть элегантной )). Извини, не стал глубоко вникать в твой код. Я написал решение - проанализируй и попробуй сам найти свои ошибки. const Если комментов недостаточно - спрашивай, я всегда отвечу. Удачи! ![]() Добавлено через 4 мин. Да, еще: входные данные ьерутся из файла roads.dat . Вот его пример: Код 1 5 10 8 2 10 3 8 5 3 - тут ответ ДА. Нули в конце можешь добавить, но они не нужны (правда, в этом случае не должно быть пустых строк в конце). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Cool_abc |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Кирилл Репутация: ![]() ![]() ![]() |
Рекурсия должна быть элегантной )).
Если комментов недостаточно - спрашивай, я всегда отвечу. Удачи! ![]() Да, еще: входные данные ьерутся из файла roads.dat . Вот его пример: Код 1 5 10 8 2 10 3 8 5 3 - тут ответ ДА. 1. можно пояснить почему ответ да?.. по каким дорогам мы последовательно доберемся из 1 и N город.. 2. я конечно понимаю.. что это элегантно.. ) можно пояснить основную рекурсивную функцию? непонятно следущее: 2.1. процедуры Include и Exclude нам не давали, но, как я понял через 10 минут перепрочитывания текста функции, это добавление и удаление элемента во множество.. вроде так, да? 2.2. s:=false; for i:=1 to n do s:=s or not(i in v) and r[a,i] and c(i,b,v); c:=s мы s присваиваем или false, или not(i in v) and r[a,i] and c(i,b,v)? поясните пожалуйста В общем, если хочешь продолжить разбираться со своим методом решения - скажи... Я в общем-то хотел бы продолжить решать своим методом.. но после изменения процедуры ввода и десятка просмотра\проходу по алгоритму ничего не изменилось..*печаль* вроде все правильно, когда прохожу по алгоритму, но не работает... вообще не понимаю, почему. попробую ещё сначала написать процедуру поиса, чтобы входными параметрами были два пункта, между которыми нужно найти дорогу.. после изменения процедуры ввода:
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 18:26 |