Maison> développement back-end> C++> le corps du texte

Implémenter la permutation complète C++ d'une chaîne donnée à l'aide de STL

王林
Libérer: 2023-09-01 23:33:06
avant
813 Les gens l'ont consulté

Implémenter la permutation complète C++ dune chaîne donnée à laide de STL

Une permutation de la chaîne est formée lorsque les caractères d'une chaîne donnée sont réorganisés sous n'importe quelle forme. Par exemple, dans ce tutoriel, nous verrons comment imprimer toutes les permutations d'une chaîne donnée à l'aide de la bibliothèque de modèles standard de C++

Input : s = “ADT” Output : “ADT”, “ATD”, “DAT”, “DTA”, “TAD”, “TDA” Explanation : In the given output as you can see all the string are made up of same three character present in our string and are just rearranged thus they fit in the definition of a permutation of a string now there is one more thing to note these are all the permutations possible of string s.
Copier après la connexion

Il existe deux façons d'imprimer toutes les permutations d'une chaîne donnée

Rotate()

Nous sommes aller à La première méthode utilisée consiste à utiliser la méthode de rotation. Dans cette méthode, nous utiliserons la fonction de rotation de STL, qui est utilisée pour faire pivoter les chaînes, et nous utiliserons la récursivité pour imprimer l'arrangement.

Exemple

Code C++ pour la méthode ci-dessus

#include using namespace std; void permutations(string s, string ans){ if(s.size() == 0) { // when our string which needs to //be rotated becomes empty then it means //that our permutation is stored in ans cout << ans << "\n"; return ; } for(int i = 0; i < s.size(); i++){ permutations(s.substr(1), ans + s[0]); // we are adding the // first character in our ans // passing all elements from index 1 in our // rotate string for next function. rotate(s.begin(), s.begin()+1, s.end()); //rotating such that our second element becomes first } } int main(){ string s = "ADT"; // given string permutations(s, ""); return 0; }
Copier après la connexion

Output

ADT ATD DTA DAT TAD TDA
Copier après la connexion

Next_Permutation

Maintenant, nous allons utiliser une autre fonction de STL, next_Permutation, comme son nom l'indique, la valeur de retour de cette fonction est la prochaine permutation de la chaîne existe. Sinon, renvoie false.

Comme vous le savez, cette fonction vérifie la permutation suivante ; nous devons donc d'abord trier la chaîne lexicographiquement afin d'obtenir toutes les permutations possibles.

Exemple

Code C++ pour la méthode ci-dessus

#include using namespace std; int main(){ string s = "ADT"; // given string sort(s.begin(), s.end()); // sorting the string do{ cout << s << "\n"; // printing the permutations }while(next_permutation(s.begin(), s.end())); // till next_permutations returns false return 0; }
Copier après la connexion

Output

ADT ATD DAT DTA TAD TDA
Copier après la connexion

Dans le programme ci-dessus, nous trions la chaîne puis, à l'aide de la fonction next_permutation, nous imprimons toutes les permutations possibles.

Conclusion

Dans ce tutoriel, nous avons imprimé toutes les permutations possibles d'une chaîne donnée à l'aide de STL en C++. Nous avons également appris le programme C++ pour le problème ainsi que quelques fonctions STL de base et leur utilisation. Nous espérons que vous avez trouvé ce tutoriel utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!