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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2009, 16:23   #1
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
Стрелка TurboPascal: теория графов

Доброго времени суток
Программа - исходник:
Код:
program MDP;
uses crt;
var
 G,F1,F2,F3,F4,F5,F6,F7,F8,F9: set of byte;
R,M: array [1..10]  of array [1..10] of integer;
Y: array [1..10] of integer;
i,j,k,n,C:integer;
begin
 clrscr;
 G:=[1,2,3,4,5,6,7,8,9];
 F1:=[2,3,4];
 F2:=[3,6];
 F3:=[4,5];
 F4:=[5,7];
 F5:=[6,8];
 F6:=[9];
 F7:=[8,9];
 F8:=[9];
 F9:=[];

for j:=1 to 9 do begin
 if j in F1 then R[1,j]:=1
  else R[1,j]:=0;
 if j in F2 then R[2,j]:=1
  else R[2,j]:=0;
 if j in F3 then R[3,j]:=1
  else R[3,j]:=0;
 if j in F4 then R[4,j]:=1
  else R[4,j]:=0;
 if j in F5 then R[5,j]:=1
  else R[5,j]:=0;
 if j in F6 then R[6,j]:=1
  else R[6,j]:=0;
  if j in F7 then R[7,j]:=1
  else R[7,j]:=0;
 if j in F8 then R[8,j]:=1
  else R[8,j]:=0;
   if j in F9 then R[9,j]:=1
  else R[9,j]:=0;
end;

 for i :=1 to 9 do begin
 for j:=1 to 9 do
  write(R[i,j],' ');
  writeln;
 end;

for j:=1 to 9 do
M[j,1]:=0;
for i:=2 to 9 do
for j:=1 to 9 do
M[j,i]:=100;

j:=1;
repeat j:=j+1;

k:=0;
for i:=1 to 9 do
if R[i,j]=1 then begin
k:=k+1;
Y[k]:=M[j-1,i]+1;
end;

C:=100;
for n:=1 to k do
if Y[n]<C then C:=Y[n];

for i:=j to 9 do
M[i,j]:=C;
until j=9;

 writeln;

 for j:=1 to 9 do begin
 for i:=1 to 9 do
  write(M[j,i],'   ');
  writeln;
  end;
 readln;

End.
Эта программа нахождения минимального пути из истока в сток на графе.
Теперь требуется: Определить длину максимального пути для графа, заданного матрицей расстояний (как сказал преподаватель это та же самая R, только вместо нулей вводить другие числа, это я сделала). Вот код:
Код:
program MDP;
uses crt;
var
 G,F1,F2,F3,F4,F5,F6,F7,F8,F9: set of byte;
R,M,S: array [1..20]  of array [1..20] of integer;
Y: array [1..10] of integer;
i,j,k,n,C,h,p,V: integer;
begin
 clrscr;
 G:=[1,2,3,4,5,6,7,8,9];
 F1:=[2,3,4];
 F2:=[3,6];
 F3:=[4,5];
 F4:=[5,7];
 F5:=[6,8];
 F6:=[9];
 F7:=[8,9];
 F8:=[9];
 F9:=[];

 for i:=1 to 9 do
for j:=1 to 9 do begin
 if j in F1 then R[1,j]:=1
  else R[1,j]:=0;
 if j in F2 then R[2,j]:=1
  else R[2,j]:=0;
 if j in F3 then R[3,j]:=1
  else R[3,j]:=0;
 if j in F4 then R[4,j]:=1
  else R[4,j]:=0;
 if j in F5 then R[5,j]:=1
  else R[5,j]:=0;
 if j in F6 then R[6,j]:=1
  else R[6,j]:=0;
  if j in F7 then R[7,j]:=1
  else R[7,j]:=0;
 if j in F8 then R[8,j]:=1
  else R[8,j]:=0;
   if j in F9 then R[9,j]:=1
  else R[9,j]:=0;
end;

 for i :=1 to 9 do begin
 for j:=1 to 9 do
  write(R[i,j],' ');
  writeln;
 end;

 for i:=1 to 9 do
for j:=1 to 9 do begin
if R[i,j]=1 then  begin
write('Vvedite ves dugi-> ');
readln(V);
S[i,j]:=V;
end;
end;

 for i :=1 to 9 do begin
 for j:=1 to 9 do
  write(S[i,j],' ');
  writeln;
 end;

for j:=1 to 9 do
M[j,1]:=0;
for i:=2 to 9 do
for j:=1 to 9 do
M[j,i]:=-100;

j:=1;
repeat j:=j+1;

k:=0;
for i:=1 to 9 do
if S[i,j]>0 then begin
k:=k+1;
Y[k]:=M[j-1,i]+M[i,j];
end;

C:=-100;
for n:=1 to k do
if Y[n]>C then C:=Y[n];

for i:=j to 9 do
M[i,j]:=C;
until j=9;

 writeln;

 for j:=1 to 9 do begin
 for i:=1 to 9 do
  write(M[j,i],'   ');
  writeln;
  end;
 readln;

End.
Но этот код естественно работает неправильно... А кроме этого ещё надо найти вершины, лежащие на максимальном пути... Помогите хотя бы только исправить код чтобы он правильно находил максимальный путь..
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор графов bondik Общие вопросы C/C++ 6 18.02.2011 17:52
Теория графов. Поиск в ширину JAVA Annabel Помощь студентам 4 03.12.2009 19:31
С++. Теория графов curly182 Общие вопросы C/C++ 3 28.05.2009 23:14
рисование графов Pitbull Общие вопросы Delphi 0 13.12.2008 19:26