AlexOge
06.01.2021 17:59

Обход графов Поиск в ширину и в глубину Вход: граф G(V, Е), представленный списками смежности Г. Выход: последовательность вершин обхода. for v ∊ V do x[v]: =0{ вначале все вершины не отмечены} end for select v ∊ V{ начало обхода — произвольная вершина } v → Т{ помещаем v в структуру данных Т ... } x[v] : = 1{... и отмечаем вершину v } repeat u← Т{ извлекаем вершину из структуры данных Т ... } yield u{ ... и возвращаем ее в качестве очередной пройденной вершины } for w ∊ Г(u) do if x[w] =0 then w → Т{ помещаем w в структуру данных Т ... } x[w]: = 1{ ... и отмечаем вершину w } end if end for until Т = Ø Если Т — это стек (LIFO — Last In First Out), то обход называется поиском в глубину. Если Т — это очередь (FIFO — First In First Out), то обход называется поиском в ширину. На входе программы задаётся количество вершин и списки смежности вершин (в порядке возрастания номера вершины). Результат работы программы: последовательность обхода вершин в глубину, через запятую - в ширину. Есть алгоритм и его необходимо воплотить в программу на С++

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Agent345
29.05.2021 06:29

  1) Имя - Робот
  2) Круг решаемых задач - Робот занимает ровно одну клетку поля. Он может переместиться на соседнюю клетку в любом направлении, закрасить клетку, проверить, свободен ли путь к  соседней клетке, выдать сообщение об ошибке, если команда неправильна.
  3) Среда - Робот действует на прямоугольном клетчатом поле. Между некоторыми клетками поля могут быть расположены стены. Некоторые клетки могут быть закрашены
  4) СКИ - включает в себя:

5 команд действий (влево, вправо, вверх, вниз, закрасить)

8 команд проверки условий (слева/справа/сверху/снизу свободно/закрашено)

цикл N раз

цикл Пока

Можно также определять процедуры - заранее заданные наборы команд (подпрограммы), которые можно вызывать по имени

  5) Система отказов - Если Робот не может выполнить команду, он выдаёт сообщение ОТКАЗ (например, ему мешает стена) Другая причина отказа - ошибка в написании команды
  6) Режимы работы - Робот работает в режиме програмного управления

0,0(0 оценок)
Ответ:
thetrueraincorn
21.09.2021 23:17
1. В "реальном мире" это решается примерно так:

// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
begin
  var a:=ArrRandom(ReadInteger('n='),0,2); a.Println;
  a.Sorted.Println
end.

Тестовое решение:
n= 15
1 2 0 2 2 0 2 0 2 0 0 1 0 0 2
0 0 0 0 0 0 0 1 1 2 2 2 2 2 2

2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают):

// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
const
  nn=100;
var
  i,j,n,t:integer;
  a:array[1..nn] of integer;
begin
  Write('n='); Read(n);
  Randomize;
  for i:=1 to n do begin
    a[i]:=Random(3);
    Write(a[i],' ')
    end;
  Writeln;
  for i:=1 to n-1 do
    for j:=1 to n-1 do
      if a[j]>a[j+1] then begin
        t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t
        end;
  for i:=1 to n do Write(a[i],' ');
  Writeln;
end.

Тестовое решение:
n=15
0 1 1 0 2 1 0 2 1 2 1 0 0 2 0
0 0 0 0 0 0 1 1 1 1 1 2 2 2 2
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота