Консультация № 197974
13.03.2020, 12:14
0.00 руб.
0 1 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Реализуйте программу, в которой выполняется алгоритм обхода графа на основе поиска в ширину
DELPHY В КОНСОЛИ!!!

Обсуждение

давно
Старший Модератор
31795
6196
22.03.2020, 21:51
общий
это ответ
Здравствуйте, JonMoxley!

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

uses crt;

const
n = 4;

type
MassivInt = array[1..n, 1..n] of integer;
MassivBool = array[1..n] of boolean;

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

Форма ответа