Форум программистов, компьютерный форум CyberForum.ru

Восстановление пути по матрице, возвращаемой алгоритмом Флойда - Уоршелла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определите количество участников состязаний, которые разделили первое место http://www.cyberforum.ru/cpp-beginners/thread1102839.html
Состязания. Если перенумеровать спортсменов числами от 0 до n-1, а попытки каждого из них – от 0 до m-1, то на вход программа получает массив int A, состоящий из неотрицательных чисел. Будем считать, что победитель определяется по лучшему результату. Определите количество участников состязаний, которые разделили первое место, то есть определите количество строк в массиве, которые содержат...
C++ Работа с классами (сделать, чтобы функция возвращала массив, получаемый суммированием двух входных) В программу передаю 2 массива из пяти чисел. После выполнения функции getAM хочу, чтобы она возвращала массив, получаемый суммированием двух входных. Сейчас, она выводит только первый элемент. Подскажите, что нужно исправить.#include <iostream> using namespace std; class demodulator { public: demodulator(int* ,int*); ~demodulator(void); int AM(void); http://www.cyberforum.ru/cpp-beginners/thread1102825.html
C++ Рекурсивная программа, печатающая n-ое простое число.
Напишите, пожалуйста, рекурсивную программу, печатающую n-ое простое число.
Определить число латинских букв в строке C++
Я не знаю как сделать эту задачу. Прошу помочь.
C++ Запуск и последующее удаление всех исполняемых файлов из каталога http://www.cyberforum.ru/cpp-beginners/thread1102776.html
Здравствуйте. Прошу помочь написать программу, которая бы запускала все исполняемые файлы (.exe, .bat, .cmd) из заданного каталога, а потом удаляла их. Как запустить исполняемый файл мне понятно, как удалить его вроде бы тоже. Вопрос вот в чем: как сделать это именно из каталога и с файлами с определенным расширением? Я правильно понял, что нужно использовать Get и SetCurrentDirectory? Или...
C++ Добавление элемента в линейный список после 1-го, 3-го, 5-го и т.д Помогите пожалуйста, нужно написать функцию добавления в линейный список заданного элемента после 1-го, 3-го, 5-го и т.д. подробнее

Показать сообщение отдельно
saroff
5 / 1 / 0
Регистрация: 09.11.2013
Сообщений: 142
25.02.2014, 02:02  [ТС]     Восстановление пути по матрице, возвращаемой алгоритмом Флойда - Уоршелла
ya_noob, Либо я что то делаю неправильно, либо еще чего, но алгоритм восстановления пути как здесь возвращает не верный результат (причем весьма часто).
В итоге нашел где-то, что можно сделать рекурсивный алгоритм восстановления. Собственно, вот он, на делфях правда.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
procedure ConvertRoute (From,mTo:Integer; var OutArray:TVektor; var VisitedVert:TSet);
var
  I:Integer;
begin
  if From <> RouteArray[From,mTo] then
  begin
    ConvertRoute(From,RouteArray[From,mTo],OutArray,VisitedVert);
  end
  else
  if not (From in VisitedVert) then
  begin
    I := Length(OutArray) + 1;
    SetLength(OutArray,I);
    OutArray[I - 1] := From;
    Include(VisitedVert,From);
  end;
  if (RouteArray[From,mTo] <> mTo) and (RouteArray[mTo,From] <> mTo) then
  begin
    ConvertRoute(RouteArray[From,mTo],mTo,OutArray,VisitedVert);
  end
  else
  if not (From in VisitedVert) then
  begin
    I := Length(OutArray) + 1;
    SetLength(OutArray,I);
    OutArray[I - 1] := mTo;
    Include(VisitedVert,mTo);
  end;
end;
VisitedVert множество куда заносятся вершины уже присутствующие в маршруте, иначе он заносил одну и ту же вершину по много раз.
 
Текущее время: 04:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru