Перечислите все входные пути к цели - PullRequest
0 голосов
/ 28 ноября 2018

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

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

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

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

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...