Language
|
Pattern

Backtracking

Trees / Graphs

void backtrack(
    int index,
    std::vector<int>& path,
    std::vector<std::vector<int>>& answer
) {
    if (BASE_CASE) {
        answer.push_back(path);
        return;
    }

    for (int choice : choices) {
        path.push_back(choice);

        backtrack(NEXT_INDEX, path, answer);

        path.pop_back();
    }
}