By Yuvraj Chandra
UdziałĆwierkaćE-mail

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.

instagram viewer

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.

UdziałĆwierkaćE-mail
11 najlepszych witryn z bezpłatnymi kursami programowania komputerowego online

Korzystając z tych bezpłatnych kursów programowania online, możesz zostać świetnym programistą bez dyplomu z informatyki.

Czytaj dalej

Powiązane tematy
  • Programowanie
  • Programowanie
  • Programowanie C
  • JavaScript
  • Pyton
O autorze
Yuvraj Chandra (58 opublikowanych artykułów)

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.

Więcej od Yuvraja Chandra

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ć