Heim >Backend-Entwicklung >C++ >Wie kann ich effizient Kombinationen in C generieren?
Kombinationen in C zu bestimmen kann eine anspruchsvolle Aufgabe sein, insbesondere wenn Sie nach einer flexiblen Lösung suchen, die unterschiedliche Eingabewerte verarbeitet.
Ein durchdachter Ansatz für dieses Problem besteht darin, die Funktion next_permutation aus der Standard-C-Bibliothek zu verwenden. Diese Funktion generiert alle Permutationen eines Vektors inkrementell. So können Sie diese Funktion nutzen:
#include <iostream> #include <algorithm> #include <vector> int main() { int n, r; std::cin >> n; std::cin >> r; std::vector<bool> v(n); std::fill(v.end() - r, v.end(), true); do { for (int i = 0; i < n; ++i) { if (v[i]) { std::cout << (i + 1) << " "; } } std::cout << "\n"; } while (std::next_permutation(v.begin(), v.end())); return 0; }
Dieser Ansatz erstellt effektiv ein Auswahlarray (v) mit r Selektorwerten. Anschließend durchläuft es alle Permutationen dieses Auswahlarrays und gibt die entsprechenden Mengenmitglieder für ausgewählte Positionen aus.
Wenn Sie beispielsweise die Eingabe „5 2“ (S = {1, 2, 3, 4) bereitstellen , 5} und r = 2) gibt dieser Algorithmus Folgendes aus:
1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5
Diese Methode bietet eine effiziente und verallgemeinerte Lösung zum Erzeugen von Kombinationen in C .
Das obige ist der detaillierte Inhalt vonWie kann ich effizient Kombinationen in C generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!