Kombinationen von Elementen in C
Einführung
Das Generieren aller möglichen Kombinationen von Elementen ist eine häufige Herausforderung in vielen Anwendungen. In diesem Artikel wird ein effizienter Algorithmus zum Generieren aller k-Kombinationen von n Elementen in C untersucht.
Der Algorithmus
Der Algorithmus verwendet eine Bitmaskentechnik, um die Kombinationen darzustellen:
Code Implementierung
#include <iostream> #include <vector> using namespace std; void combinations(vector<int>& items, int k) { int n = items.size(); for (int bitmask = 0; bitmask < (1 << n); bitmask++) { vector<int> combination; for (int i = 0; i < n; i++) { if ((bitmask >> i) & 1) { combination.push_back(items[i]); } } cout << "Combination: "; for (int item : combination) { cout << item << " "; } cout << endl; } } int main() { vector<int> items = {1, 2, 3, 4, 5}; int k = 3; combinations(items, k); return 0; }
Ausgabe
Combination: 1 2 3 Combination: 1 2 4 Combination: 1 2 5 Combination: 1 3 4 Combination: 1 3 5 Combination: 1 4 5 Combination: 2 3 4 Combination: 2 3 5 Combination: 2 4 5 Combination: 3 4 5
Analyse
Die Komplexität des Algorithmus beträgt O(n * 2^n), wobei n die Anzahl der Elemente ist. Dies liegt daran, dass alle möglichen Bitmaskenwerte durchlaufen werden, von denen jeder eine eindeutige Kombination darstellt.
Das obige ist der detaillierte Inhalt vonWie kann ich alle k-Kombinationen von n Elementen in C generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!