Chcesz wydrukować permutacje ciągu? Pokażemy Ci jak w kilku językach.
Permutacja to ułożenie obiektów w określonej kolejności. Możesz permutować ciąg o długości n w n! sposoby.
W tym artykule dowiesz się, jak znaleźć wszystkie permutacje danego ciągu znaków za pomocą C++, Pythona, JavaScript i C.
Jak działają permutacje?
Powiedzmy, że masz sznurek str z „MUO” jako wartościami ciągu. Zostałeś poproszony o pokazanie permutacji ciągu. Oto, jak możesz się do tego zabrać:
Przykład 1: Niech str = „MUO”
Permutacje „MUO” to:
- „MUO”
- „MOU”
- „UMO”
- „JM”
- „OUM”
- „OMU”
Zwróć uwagę na kolejność wartości. Oto kolejny przykład:
Przykład 2: Niech str = „AB”
Wszystkie permutacje „AB” to:
- „AB”
- „BA”
Możesz również wydrukować zduplikowane permutacje, jeśli w danym ciągu występują powtarzające się znaki. (na przykład ABBA)
Teraz, gdy rozumiesz, jak działają permutacje, przyjrzyjmy się, jak możesz je znaleźć przy użyciu preferowanego języka programowania.
Notatka: Zaprojektowaliśmy następujący przykład kodu, aby wyprowadzić permutacje dla trzech ciągów: MUO, AB i XYZ. Jeśli chcesz użyć dowolnego z tego kodu, skopiuj go i zmień te ciągi, aby pasowały do Twojego projektu.
Związane z: Jak przekonwertować znaki ciągu na przeciwny przypadek za pomocą programowania?
Program C++ do drukowania wszystkich permutacji ciągu
Poniżej znajduje się program C++ do drukowania wszystkich permutacji ciągu:
// program C++ do drukowania wszystkiego
// permutacje ciągu
#włączać
używając standardowej przestrzeni nazw;
// Funkcja do drukowania permutacji łańcucha
void findPermutations (string str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
w przeciwnym razie
{
for (int i = leftIndex; i <= prawoIndeks; i++)
{
swap (str[leftIndex], str[i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str[leftIndex], str[i]);
}
}
}
// Kod kierowcy
int main()
{
ciąg str1 = "MUO";
int rozmiar1 = str1.rozmiar();
cout << "str1: " << str1 << endl;
cout << "Permutacje " << str1 << ":" << endl;
znajdźPermutacje (str1, 0, size1-1);
ciąg str2 = "AB";
int rozmiar2 = str2.rozmiar();
cout << "str2: " << str2 << endl;
cout << "Permutacje " << str2 << ":" << endl;
znajdźPermutacje (str2, 0, size2-1);
ciąg str3 = "XYZ";
int rozmiar3 = str3.rozmiar();
cout << "str3: " << str3 << endl;
cout << "Permutacje " << str3 << ":" << endl;
znajdźPermutacje (str3, 0, size3-1);
zwróć 0;
}
Wyjście:
str1: MUO
Permutacje MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacje AB:
AB
BA
str3: XYZ
Permutacje XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Związane z: Jak sprawdzić, czy ciąg jest symetryczny z programowaniem?
Program Pythona do drukowania wszystkich permutacji ciągu znaków
Następnie jest kod Pythona do drukowania wszystkich permutacji ciągu:
# Program w Pythonie do drukowania wszystkich
# permutacje ciągu
def convertToString (Lista):
return ''.join (Lista)
# Funkcja do drukowania permutacji łańcucha
def findPermutations (s, leftIndex, rightIndex):
if leftIndex == rightIndex:
drukuj (convertToString (s))
w przeciwnym razie:
dla i w zakresie (leftIndex, rightIndex+1):
s[lewyIndeks], s[i] = s[i], s[lewyIndeks]
findPermutations (s, leftIndex+1, rightIndex)
# cofnij się
s[lewyIndeks], s[i] = s[i], s[lewyIndeks]
# Kod kierowcy
str1 = "MUO"
rozmiar1 = długość (str1)
s1 = lista (str1)
print("sł1:", słowo1)
print("Permutacje", str1,":")
znajdźPermutacje (s1, 0, size1-1)
str2 = "AB"
rozmiar2 = długość (str2)
s2 = lista (str2)
print("str2:", str2)
print("Permutacje", str2,":")
findPermutacje (s2, 0, size2-1)
str3 = "XYZ"
rozmiar3 = długość (str3)
s3 = lista (str3)
print("str3:", str3)
print("Permutacje", str3,":")
findPermutacje (s3, 0, size3-1)
Wyjście:
str1: MUO
Permutacje MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacje AB:
AB
BA
str3: XYZ
Permutacje XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Związane z: Jak sprawdzić, czy dwa ciągi są anagramami siebie nawzajem?
Program JavaScript do drukowania wszystkich permutacji ciągu
Oto jak drukujesz permutacje w JavaScript:
// program JavaScript do drukowania wszystkiego
// permutacje ciągu
// Funkcja do zamiany znaków ciągu
zamiana funkcji (str, leftIndex, i) {
niech temp;
niech tempArray = str.split("");
temp = tablica temp[leftIndex] ;
tablica temp[leftIndex] = tablica temp[i];
tablica temp[i] = temp;
return (tempArray).join("");
}
// Funkcja do drukowania permutacji łańcucha
function findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
dokument.zapis (str + "
");
} w przeciwnym razie {
for (niech i = leftIndex; i <= prawoIndeks; i++) {
str = swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = swap (str, leftIndex, i);;
}
}
}
// Kod kierowcy
zmienna str1 = "MUO";
var size1 = str1.length;
document.write("str1: " + str1 + "
");
document.write("Permutacje " + str1 + ":" + "
");
znajdźPermutacje (str1, 0, size1-1);
zmienna str2 = "AB";
var rozmiar2 = str2.długość;
document.write("str2: " + str2 + "
");
document.write("Permutacje " + str2 + ":" + "
");
znajdźPermutacje (str2, 0, size2-1);
zmienna str3 = "XYZ";
var size3 = str3.length;
document.write("str3: " + str3 + "
");
document.write("Permutacje " + str3 + ":" + "
");
znajdźPermutacje (str3, 0, size3-1);
Wyjście:
str1: MUO
Permutacje MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacje AB:
AB
BA
str3: XYZ
Permutacje XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Związane z: Jak ukończyć wyzwanie FizzBuzz w 5 językach programowania?
Program C do drukowania wszystkich permutacji ciągu
Poniżej znajduje się program w C, który wypisuje wszystkie permutacje ciągu:
// Program C do drukowania wszystkiego
// permutacje ciągu
#włączać
#włączać
// Funkcja do zamiany znaków ciągu
void swap (char str[], int leftIndex, int i)
{
char temp = str[lewyIndeks];
str[lewyIndeks] = str[i];
str[i] = temp;
}
// Funkcja do drukowania permutacji łańcucha
void findPermutations (char str[], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf("%s \n", str);
}
w przeciwnym razie
{
for (int i = leftIndex; i <= prawoIndeks; i++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Kod kierowcy
int main()
{
znak str1[] = "MUO";
int size1 = strlen (str1);
printf("str1: %s \n", str1);
printf("Permutacje %s: \n", str1);
znajdźPermutacje (str1, 0, size1-1);
znak str2[] = "AB";
int size2 = strlen (str2);
printf("str2: %s \n", str2);
printf("Permutacje %s: \n", str2);
znajdźPermutacje (str2, 0, size2-1);
znak str3[] = "XYZ";
int size3 = strlen (str3);
printf("str3: %s \n", str3);
printf("Permutacje %s: \n", str3);
znajdźPermutacje (str3, 0, size3-1);
zwróć 0;
}
Wyjście:
str1: MUO
Permutacje MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacje AB:
AB
BA
str3: XYZ
Permutacje XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Drukowanie permutacji jest łatwe
W tym artykule nauczyłeś się drukować wszystkie permutacje ciągu w kilku językach programowania. Chociaż te przykładowe programy nie są jedynym sposobem obsługi permutacji, są świetnym początkiem dla tych, którzy nie używają ich w kodzie.
Korzystając z tych bezpłatnych kursów programowania online, możesz zostać świetnym programistą bez dyplomu z informatyki.
Czytaj dalej
- Programowanie
- Programowanie
- Programowanie C
- JavaScript
- Pyton

Yuvraj jest studentem informatyki na Uniwersytecie w Delhi w Indiach. Jest pasjonatem Full Stack Web Development. Kiedy nie pisze, bada głębię różnych technologii.
Zapisz się do naszego newslettera
Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Kliknij tutaj, aby zasubskrybować