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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2016, 20:45   #1
Малайка
 
Регистрация: 09.05.2015
Сообщений: 4
По умолчанию Алгоритм Дейкстры

Код:
procedure TForm2.Button2Click(Sender: TObject);
var q:integer;//
    pr,sr:integer;
    k,l:integer;
    min:integer;
   // strin:string;
begin
    q:=strtoint(edit9.Text);
      if (q>n) or (q<1) or (edit1.Text='') then
      begin
        q:=1;
        Edit1.Text:='1';
      end;
 
    for i:=1 to n do
    begin
      for j:=1 to n do
      s[i,j]:=-1;
      s[i,i]:=-1000;
      p[i,4]:=-1;
 
    end;
    s[1,3]:=strtoint(edit1.Text);
    s[5,1]:=strtoint(edit2.Text);
    s[3,2]:=strtoint(edit4.Text);
    s[2,4]:=strtoint(edit8.Text);
    s[2,3]:=strtoint(edit4.Text);
    s[3,4]:=strtoint(edit5.Text);
    s[4,6]:=strtoint(edit7.Text);
    s[1,5]:=strtoint(edit2.Text);
    s[5,2]:=strtoint(edit3.Text);
    s[6,5]:=strtoint(edit6.Text);
 
    for i:=1 to n do
    p[i,1]:=i;
 
    sr:=0;
    pr:=1;
    k:=q;
 
    p[q,2]:=0;
    p[q,3]:=q;
    p[q,4]:=1;
    
    while pr=1 do
    begin min:=1000;
      for i:=1 to n do
        if (s[k,i]<>-1000) and (s[k,i]<>-1) then 
          if (p[i,4]<>1) or (p[i,2]=0) then
            /////////////////
          begin
            p[i,2]:=Sr+s[k,i];    
            p[i,3]:=k;          
            p[i,4]:=0;        
          end;
          for i:=1 to n do begin
            if (p[i,4]=0) then   
              if p[i,2]<min then
              begin
                min:=p[i,2];
                l:=i;
              end;
              end;
              p[l,4]:=1;
              sr:=p[l,2];
              k:=l;
 
        if (p[1,4]<>-1) and (p[1,4]<>0) then
        if (p[2,4]<>-1) and (p[2,4]<>0)  then
        if (p[3,4]<>-1) and (p[3,4]<>0) then
        if (p[4,4]<>-1) and (p[4,4]<>0) then
        if (p[5,4]<>-1) and (p[5,4]<>0) then
        if (p[6,4]<>-1) and (p[6,4]<>0)
        then pr:=0;
end;

Как вывести ответ в ListBox
От узла до узла и расстояние

Последний раз редактировалось Малайка; 05.03.2016 в 20:49.
Малайка вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
алгоритм Дейкстры Настюн Помощь студентам 3 14.10.2013 16:41
Алгоритм Дейкстры Kharass Помощь студентам 3 03.03.2013 16:38
Алгоритм Дейкстры Opiym Общие вопросы .NET 1 29.05.2010 17:04
Алгоритм Дейкстры tarnis Общие вопросы Delphi 4 11.05.2010 14:00
Алгоритм Дейкстры Dimon88 Помощь студентам 2 03.11.2007 17:13