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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2012, 00:50   #1
пипеточка
Новичок
Джуниор
 
Регистрация: 20.05.2012
Сообщений: 2
Злость алгоритм Флойда

Люди, помогите разобраться с алгоритмом флойда нахождение кратчайших расстояний!! Объясните вот эту процедуру:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with StringGrid1 do begin
for i:=1 to RowCount do
for j:=1 to ColCount do begin
Cells[i,j]:=Cells[j,i];//матрица симметрична относительно основной диагонали
Cells[i,i]:=IntToStr(0);
end;
for i:=1 to RowCount -1 do
for j:=1 to ColCount -1 do
if Cells[i,j]='' then begin//проверка на заполненность матрицы
Label2.Visible:=True;//вывод предупреждающего сообщения
exit;//выход из процедуры
end; //if
for i:=1 to RowCount -1 do //задали матрицу D равную матрице длин путей
for j:=1 to ColCount -1 do
if Cells[i,j]='#' then
D[i,j]:=888
else
D[i,j]:=StrToInt(StringGrid1.Cells[i,j]);
end; // StringGrid1
for i:=1 to StringGrid1.RowCount -1 do
for j:=1 to StringGrid1.ColCount -1 do begin
if D[i,j]=888 then
StringGrid2.Cells[i,j]:='#'
else
StringGrid2.Cells[i,j]:=IntToStr(D[i,j]);
end;//if
for i:=1 to StringGrid1.RowCount-1 do
for j:=1 to StringGrid1.ColCount-1 do
begin
P[i,i]:=0;
if D[i,j]=888 then P[i,j]:=0 else //задали матрицу кратчайших путей.0 если пути нет
P[i,j]:=i;
end;//for
for k:=1 to StringGrid1.ColCount-1 do
for i:=1 to StringGrid1.RowCount-1 do
for j:=1 to StringGrid1.ColCount-1 do
begin
if (i<>j) and (D[i,j]<>888) and (D[i,k]<>888) and (D[k,i]<>888) and (D[i,j]>D[k,j]+D[i,k])
then begin
P[i,j]:=k;
StringGrid2.Cells[i,j]:=IntToStr(StrToInt(StringGrid2.Cel ls[k,j])+StrToInt(StringGrid2.Cells[i,k]));
end;//if
StringGrid3.Cells[i,j]:=IntToStr(P[i,j]);
end;//for
end;
пипеточка вне форума Ответить с цитированием
Старый 02.06.2012, 10:19   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Алгоритм нужно разбирать по его описанию на естественном языке, а не по реализации на конкретном ЯП.
s-andriano вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм Флойда. Поиск Кратчайшего пути. Shady Помощь студентам 5 06.10.2014 18:29
Алгоритм Флойда Александр36М Помощь студентам 5 14.10.2011 16:16
Алгоритм Флойда [списки] Panzerfaust Помощь студентам 2 06.05.2011 16:49
Алгоритм Флойда-Уоршела _Disa Общие вопросы C/C++ 4 17.11.2010 11:36
Алгоритм Флойда Дим@@ Помощь студентам 4 25.10.2010 20:19