Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2013, 11:37   #1
ILovePascal
 
Регистрация: 11.12.2013
Сообщений: 3
Сообщение Кратчайший путь


Нужно чтобы программа выводила кратчайший путь от точки (x1) до точки (x7) и длину пути.
ILovePascal вне форума Ответить с цитированием
Старый 11.12.2013, 12:22   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Наработки где?
А мозг? Зачем сразу в двух разделах?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 11.12.2013, 12:26   #3
ILovePascal
 
Регистрация: 11.12.2013
Сообщений: 3
По умолчанию

program min_road;
const
N = 7;
var
map: array[1..N, 1..N] of integer;
road: array[1..N] of integer;
X: array[1..N] of boolean;
len: integer;
c_len: integer;
start, finish: integer;
i, j: integer;
procedure step(s, f, p: integer);
var
c: integer;
begin
if s = f then
begin
len := c_len;
write('Возможный путь: ');
for i := 1 to p - 1 do write(road[i], ' ');
writeln('Длина пути: ', len);
end
else
for c := 1 to N do
if (map[s, c] <> 0) and (not X[c]) and ((len = 0) or (c_len + map[s, c] < len))

then begin
road[p] := c;
X[c] := TRUE;

c_len := c_len + map[s, c];
step(c, f, p + 1);
X[c] := FALSE;
road[p] := 0;
c_len := c_len - map[s, c];
end;
end;

begin

for i := 1 to N do road[i] := 0;
for i := 1 to N do X[i] := FALSE;
for i := 1 to N do for j := 1 to N do map[i, j] := 0;

map[1, 2] := 8;
map[1, 3] := 4;
map[2, 4] := 8;
map[2, 5] := 3;
map[3, 2] := 3;
map[3, 4] := 10;
map[3, 6] := 12;
map[4, 6] := 3;
map[5, 4] := 2;
map[5, 7] := 10;
map[6, 7] := 4;

writeln(Введите входную и выходную вершину: ');
readln(start, finish);
road[1] := start;
X[start] := TRUE;
len := 0;
c_len := 0;
step(start, finish, 2);
end.

Как сделать, что бы паскаль подсвечивал кратчайший путь или как-нибудь его выделял! ?
И еще подскажите каким методом решена задача?

Последний раз редактировалось ILovePascal; 11.12.2013 в 13:12.
ILovePascal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(с++) Кратчайший путь в графе Uefa Помощь студентам 15 04.12.2013 15:50
Кратчайший путь Delphi zzzzz Помощь студентам 1 27.06.2012 07:39
Кратчайший путь к точке W0LF Общие вопросы Delphi 3 17.05.2011 15:40
Кратчайший путь между двум вершинами Gapro Общие вопросы C/C++ 4 04.11.2010 20:24
Найти кратчайший путь между точками lucky Общие вопросы Delphi 0 27.05.2009 07:26