настя7176
05.04.2022 18:33

Обход графов Поиск в ширину и в глубину Вход: граф 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), то обход называется поиском в ширину. На входе программы задаётся количество вершин и списки смежности вершин (в порядке возрастания номера вершины). Результат работы программы: последовательность обхода вершин в глубину, через запятую - в ширину. Есть алгоритм и его необходимо воплотить в программу на С++

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Vaz21121
28.10.2021 11:11
// PascalABC.Net 3.0, сборка 1052
const
  nn=100;
var
  a:array[1..nn] of integer;
  p,s:longint;
  i,n:byte;
begin
  Write('Введите количество элементов в массиве: '); Read(n);
  Writeln('Вводите целочисленные элементы массива через пробел');
  s:=0; p:=1;
  for i:=1 to n do begin
    Read(a[i]);
    if i mod 2 = 0 then p:=p*a[i];
    s:=s+a[i]
  end;
  Writeln('Произведение элементов с четными номерами: ',p);
  Writeln('Среднее арифметическое элементов: ',s/n)
end.

Тестовое решение:
Введите количество элементов в массиве: 10
Вводите целочисленные элементы массива через пробел
-4 6 11 8 12 21 7 13 9 -15
Произведение элементов с четными номерами: -196560
Среднее арифметическое элементов: 6.8
0,0(0 оценок)
Ответ:
денис9645
28.10.2021 11:11
// PascalABC.NET 3.3, сборка 1607 от 31.12.2017
// Внимание! Если программа не работает, обновите версию!

type
  R=sequence of integer;

begin
  var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
  var P:R->BigInteger:=t->t.Aggregate(BigInteger(1),(p,q)->p*q);
  if P(a.Where(t->t.IsEven))>P(a.Where(t->t.IsOdd))
  then Writeln('Номер максимального элемента: ',a.IndexMax+1)
  else Writeln('Номер минимального элемента: ',a.IndexMin+1)
end.

Примеры
n= 17
31 98 7 42 -70 -98 -34 43 -48 -40 -28 -35 15 26 25 1 -66
Номер минимального элемента: 6

n= 15
95 88 -82 96 87 -68 17 40 -66 1 60 -25 -78 -55 -55
Номер максимального элемента: 4
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота