Консультация № 197973
13.03.2020, 12:13
0.00 руб.
0 2 1
Здравствуйте! Прошу помощи в следующем вопросе:
Реализуйте программу, в которой выполняется алгоритм обхода графа на основе поиска в глубину
DELPHY в КАНСОЛИ!!

Обсуждение

давно
Студент
402651
154
13.03.2020, 13:45
общий
Адресаты:
program DepthFirstSearch;
uses crt;
const
n=5;
var
i, j, start: integer;
visited: array[1..n] of boolean;
const graph: array[1..n,1..n] of byte =
((0, 1, 0, 0, 1),
(1, 0, 1, 1, 0),
(0, 1, 0, 0, 1),
(0, 1, 0, 0, 1),
(1, 0, 1, 1, 0));
{поиск в глубину}
procedure DFS(st: integer);
var r: integer;
begin
write(st:2);
visited[st]:=true;
for r:=1 to n do
if (graph[st, r]<>0) and (not visited[r]) then
DFS(r);
end;
{основной блок программы}
begin
clrscr;
writeln('Матрица смежности:');
for i:=1 to n do
begin
visited[i]:=false;
for j:=1 to n do
write(graph[i, j],' ');
writeln;
end;
write('Стартовая вершина >> '); read(start);
writeln('Результат обхода'); DFS(start);
end.
давно
Старший Модератор
31795
6196
22.03.2020, 21:47
общий
это ответ
Здравствуйте, JonMoxley!

Вы можете использовать код сайта Kvodo.
Код написан на PASCAL => замените CRT на SysUtils и удалите clrscr;
[code lang=pascal]program DepthFirstSearch;

uses crt;

const
n = 5;

var
i, j, start: integer;
visited: array[1..n] of boolean;

const
graph: array[1..n, 1..n] of byte =
((0, 1, 0, 0, 1),
(1, 0, 1, 1, 0),
(0, 1, 0, 0, 1),
(0, 1, 0, 0, 1),
(1, 0, 1, 1, 0));
{поиск в глубину}
procedure DFS(st: integer);
var
r: integer;
begin
write(st:2);
visited[st] := true;
for r := 1 to n do
if (graph[st, r] <> 0) and (not visited[r]) then
DFS(r);
end;
{основной блок программы}
begin
clrscr;
writeln('Матрица смежности:');
for i := 1 to n do
begin
visited[i] := false;
for j := 1 to n do
write(graph[i, j], ' ');
writeln;
end;
write('Стартовая вершина >> '); read(start);
writeln('Результат обхода'); DFS(start);
end.[/code]
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа