Diese Frage ist ja prädestiniert für ChatGTP ;-)
Antwort auf die kopierte Frage des TO:
Eine Möglichkeit, dies in C++ mit der Standard-Bibliothek zu tun, ist die Verwendung der next_permutation() Funktion aus der <algorithm> Bibliothek. Sie können zunächst eine Permutation aller Zeichen in m erstellen und dann next_permutation() in einer Schleife aufrufen, um alle möglichen Permutationen zu generieren. Um die Anzahl der Zeichen in der Kombination auf n zu beschränken, können Sie die ersten n Zeichen der aktuellen Permutation verwenden. Hier ist ein Beispiel-Code:
#include <iostream>
#include <algorithm>
int main() {
std::string m = "abc";
int n = 2;
1 |
// Erstellen Sie eine Permutation aller Zeichen in m
|
2 |
std::sort(m.begin(), m.end());
|
3 |
|
4 |
int j = 0;
|
5 |
do {
|
6 |
// Verwenden Sie die ersten n Zeichen der aktuellen Permutation
|
7 |
std::cout << "j" << j << ": ";
|
8 |
for (int i = 0; i < n; i++) {
|
9 |
std::cout << m[i];
|
10 |
}
|
11 |
std::cout << std::endl;
|
12 |
j++;
|
13 |
} while (std::next_permutation(m.begin(), m.end()));
|
14 |
|
15 |
return 0;
|
}
Beachten Sie, dass die obige Lösung die Reihenfolge der Zeichen in der Kombination nicht berücksichtigt, sondern lediglich die Anzahl der Zeichen beschränkt. Wenn die Reihenfolge der Zeichen wichtig ist, müssten Sie eine andere Lösung verwenden.