Ich habe eine Deque, die eine Reihe von Zahlen enthält {0, 1, 2, 3, 4, 5, 6}
und ich versuche, alle möglichen Kombinationen dieser Zahlen durch Rekursion zu erstellen.Erstellen Sie alle möglichen Kombinationen mit einer Deque und Rekursion C++
Hier ist meine aktuellen Code
void combination(vector<node> &comb, deque<node> &numbers) {
if (numbers.empty()) {
for (unsigned int i = 0; i < comb.size(); i++) {
cout << comb[i].id << " ";
}
cout << "\n";
return;
}
comb.push_back(numbers.front());
numbers.pop_front();
combination(comb, numbers);
comb.pop_back();
combination(comb, numbers);
}
ich dies durch auf Papier lief habe und es macht Sinn, aber wenn ich es das ist der Ausgang laufen:
0 1 2 3 4 5 6
0 1 2 3 4 5
0 1 2 3 4
0 1 2 3
0 1 2
0 1
0
Warum ist nicht die Funktion alle möglichen Kombinationen ausdrucken?
Auch das möchte ich verwenden - Ein Deque, der die Zahlen und einen Vektor enthält, der jede Kombination enthält.
Ich nehme an, dies für eine Schule ist Übung oder andere Lernerfahrung? Andernfalls sollten Sie stattdessen ['std :: next_permutation'] (http://en.cppreference.com/w/cpp/algorithm/next_permutation) verwenden. –
Ich verwende dies, um eine Branch and Bound-Methode für ein Problem zu implementieren. Also, ich kann 'next_permutation' nicht verwenden –
Auch der Code, wie Sie hier gepostet haben, würde nicht kompilieren. Ich nehme an, die Funktion sollte "permute" anstelle von "combination" genannt werden und "combination.push_back (...)" sollte "comb.push_back (...)" lauten. – CantrianBear