![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, дайте пож. ссылочку на алгоритм Флойда-Уоршелла на Pascal или Delphi, а то в сети только на C++.
|
#2
|
||||
|
||||
![]() ну так наверное не алгоритм нужен, а реализация алгоритма? ибо описание алгоритма не зависит от языка его реализации.
Пишу программы за еду. __________________ |
#4
|
|||
|
|||
![]() Спасибо, я уже сам нашёл, но у меня вопрос по коду:
Код:
type Graph = array[1..nn,1..nn] of integer; Procedure Floyd(var a, p: graph); var i,j,k: integer; c: graph; begin //A - матрица содержащая кратчайшие пути. //P - матрица, сохраняющая маршруты. Randomize; for i:=1 to nn do for j:=1 to nn do c[i,j] := random(100); for i:=1 to nn do for j:=1 to nn do begin a[i,j]:=c[i,j]; p[i,j]:=0; end; for i:=1 to nn do a[i,i]:=0; for k:=1 to nn do for i:=1 to nn do for j:=1 to nn do if (a[i,k]+a[k,j] < a) then begin a[i,j]:=a[i,k]+a[k,j]; p[i,j]:=k; end; end; Код:
if (a[i,k]+a[k,j] < a) then |
#5
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 07.04.2011 в 14:26. |
#6
|
|||
|
|||
![]() если б не хотел не отвечал бы на вопрос, зачем мне отминусил.
|
#7
|
|||
|
|||
![]() Цитата:
|
#8
|
|||
|
|||
![]() Я пробывал так, но результатвыходит не верный
|
#9
|
|||
|
|||
![]() В алгоритме написано:
Код:
W[i][j] = min(W[i][j], W[i][k] + W[k][j]) Код:
if (a[i,k]+a[k,j] < a[i,j]) then begin a[i,j]:=a[i,k]+a[k,j]; |