Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann ich alle k-Kombinationen von n Elementen in C generieren?

Patricia Arquette
Freigeben: 2024-11-21 01:06:14
Original
308 Leute haben es durchsucht

How Can I Generate All k-Combinations of n Items in C  ?

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:

  • Jedem Element wird ein Bit in der Bitmaske zugewiesen, wobei ein gesetztes Bit angibt, dass das Element in der enthalten ist Kombination.
  • Der Algorithmus durchläuft alle möglichen Bitmaskenwerte und verwendet die Bitmaske, um zu bestimmen, welche Elemente in jeder Kombination enthalten sind.

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;
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage