Перечислите все входные пути к цели

Попытка перечислить все входные пути (путь, начинающийся с вершины с нулевой степенью) к целевой вершине.

Все входящие / исходящие ребра хранятся в векторе, называемом вершинами.
Я пытаюсь использовать рекурсию, чтобы пройти, начиная с цели, работать в обратном направлении и на каждом входящем узле, рекурсивно вызывать и извлекать пути до вершины, у которой размер входящего векторного ребра равен нулю (то есть не зависит от нуля).

Все различные пути хранятся в векторе с использованием конкатенации строк.

Функция печатает правильное количество различных путей и их начальных вершин, но некоторые пути после этого пропускают некоторые вершины. Я не уверен в том, что вызывает эту проблему.

bool enum_paths_helper(int target, vector<string> &paths, int &y) {

if (has_cycle() || target < 0 || target >= num_nodes())
return false;

int i;
if (vertices[target].incoming.size() == 0) {
y = paths.size();
paths.push_back(vertices[target].name);
return true;
}
for (i = 0; i < vertices[target].incoming.size(); i++) {
enum_paths_helper(vertices[target].incoming[i].vertex_id, paths, y);
paths[y] = paths[y] +" "  + vertices[target].name;

}

return true;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector