|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.04.2011, 20:06 | #1 |
Регистрация: 29.03.2011
Сообщений: 4
|
путь от одной вершины графа к другой
В не взвешенном графе нужно найти путь от одной вершины к другой.
Нужно реализовать на языке Pascal. Просто я ее почему-то не очень понимаю Заранее спасибо!!! |
05.04.2011, 21:36 | #2 |
Регистрация: 29.03.2011
Сообщений: 4
|
Люди неужели никто не знает.
|
05.04.2011, 22:26 | #3 |
Пользователь
Регистрация: 27.12.2010
Сообщений: 82
|
Навероне знает. Просто вопрос уж слишком по дурацки поставлен. Ответ на него курсовая "под ключ". Да и элементарно данных не хватает. Какой граф вы не пишете. По какому принципу искать путь... Там несколько несложных методов математических есть, которые вам на лекциях должны давать были. А закодить их элементарно.
|
06.04.2011, 22:21 | #4 |
Регистрация: 29.03.2011
Сообщений: 4
|
простите я наверно не совсем корректно выразилась
у меня программа работает только когда начало и конец пути совпадает, не могли бы вы сказать где ошибка ПОЖАЛУЙСТА.(граф не ориентирован, на лекциях нам никаких методов не давали, простите если я не правильно выразилась) uses crt; var a:array[1..200,1..200] of byte; {матрица для смежности графа} bil:array[1..200] of boolean; {матрица для записи уже просмотренных вершин} put:array[1..300] of integer; {матрица пути} i,n,j,p,na,kon,dl,odl,kz:integer; kol:integer; f:text; {граф задается из файла} procedure enter; begin assign(f,'input.txt'); reset(f); read(f,n); for i:=1 to n do begin for j:=1 to n do read(f,a[i,j]); end; close(f); end; procedure print; begin for i:=1 to n do begin for j:=1 to n do write(a[i,j],' '); writeln; end; end; procedure poisk(ng,kg,c:integer); var ii:integer; begin if ng=kg then begin {если дошли до конца пути, то выводим путь} write('way:'); for ii:=1 to c-1 do write(put[ii],' '); writeln; end else begin { ищем промежуточные путь после ng} for ii:=1 to n do if (a[ng,ii]<>0) and (bil[ii]<>true){вершины связаны и текущая вершина } then begin {не рассмотрена} put[c]:=ii; bil[ii]:=true; poisk(ii,kg,c+1);{ищем путь до конечной вершины (рекурсивно)} put[c]:=0; {c вершины ii могут быть другие пути,} bil[ii]:=false;{поэтому открываем путь от вершины ii} end; end; end; procedure enterparam; begin write('vvedite start and end'); readln(na,kon); fillchar(bil,sizeof(bil),false); put[1]:=na; {запомним начало пути} bil[na]:=true; {вершина рассмотрена} p:=1; {1 - ое звено найдено } poisk(na,kon,p+1); {ищем следующее (2-ое звено)} end; begin clrscr; enter; print; enterparam; readkey; end. |
14.04.2011, 16:55 | #5 |
Регистрация: 29.03.2011
Сообщений: 4
|
В текстовом файле сначала нужно (в первой строке) указать количество вершин, а дальше (со 2-й строчки) уже матрицу смежности
|
14.04.2011, 20:05 | #6 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
Напиши пример исходных данных, на которых оно не работает )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сравнить вершины графа на смежность(delphi7)? | LightJulia | Помощь студентам | 2 | 30.05.2010 19:56 |
нужно определить наименьший путь решения графа | one1991 | Помощь студентам | 6 | 23.05.2010 23:33 |
СИ! Найти путь из одной координаты в другую. | itstep | Помощь студентам | 0 | 14.02.2010 18:38 |
Координаты вершины графа в списке | Glarus | Помощь студентам | 0 | 15.12.2009 20:21 |