Heim > Backend-Entwicklung > C++ > Wie kann ich mithilfe von Permutationen Kombinationen in C generieren?

Wie kann ich mithilfe von Permutationen Kombinationen in C generieren?

Mary-Kate Olsen
Freigeben: 2024-11-30 19:04:13
Original
533 Leute haben es durchsucht

How Can I Generate Combinations in C   Using Permutations?

Erzeugen von Kombinationen in C mithilfe einfacher Permutationen

In C können Sie Kombinationen mithilfe eines einfachen Ansatzes mit Permutationen generieren. Diese Methode erfordert ein Verständnis des Konzepts der Permutationsgenerierung, bei dem die Reihenfolge der Elemente von Bedeutung ist.

Algorithmus-Übersicht:

  1. Erstellen Sie einen booleschen Vektor v der Größe n, wobei n die Gesamtzahl der Elemente in der Menge ist.
  2. Setzen Sie die ersten r Elemente von v auf „true“. Dieser Schritt wählt die ersten r Elemente aus der Menge aus.
  3. Verwenden Sie die Funktion next_permutation oder prev_permutation, um alle Permutationen des booleschen Vektors zu generieren.
  4. Drucken Sie für jede Permutation die Indizes der entsprechenden Elemente aus die wahren Werte in v.

Implementierung:

Hier ist eine Implementierung dieses Algorithmus unter Verwendung von next_permutation:

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

Erklärung:

Die Funktion next_permutation generiert die nächste lexikografische Permutation von boolescher Vektor. Indem wir über den Vektor iterieren und die Indizes der wahren Werte ausgeben, erhalten wir Kombinationen der ersten r Elemente in der Menge.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Permutationen Kombinationen 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