Avtor Yuvraj Chandra
DelitiCvrkutatiE-naslov

Ali morate natisniti permutacije niza? Pokazali vam bomo, kako v več jezikih.

Permutacija je razporeditev predmetov v določenem vrstnem redu. Niz dolžine n lahko spremenite v n! načine.

V tem članku se boste naučili, kako poiskati vse permutacije danega niza s pomočjo C ++, Python, JavaScript in C.

Kako delujejo permutacije?

Recimo, da imate vrvico str z vrednostmi niza »MUO«. Od vas se zahteva, da prikažete permutacije niza. Tako bi se lotili tega:

Primer 1: Naj bo str = "MUO"

Permutacije "MUO" so:

  • "MUO"
  • "MOU"
  • "UMO"
  • "UOM"
  • "OUM"
  • "OMU"

Upoštevajte vrstni red vrednosti. Tu je še en primer:

Primer 2: Naj bo str = "AB"

Vse permutacije "AB" so:

  • "AB"
  • "BA"

Natisnete lahko tudi podvojene permutacije, če so v danem nizu ponavljajoči se znaki. (ABBA, na primer)

Zdaj, ko razumete, kako delujejo permutacije, poglejmo, kako jih lahko najdete v želenem programskem jeziku.

Opomba: Zasnovali smo naslednje primere kode za izpis permutacij za tri nize: MUO, AB in XYZ. Če želite uporabiti katero koli od teh kod, jo kopirajte in spremenite te nize, da ustrezajo vašemu projektu.

instagram viewer

Povezano: Kako s programiranjem pretvoriti znake niza v nasprotno črko

Program C ++ za tiskanje vseh permutacij niza

Spodaj je program C ++ za tiskanje vseh permutacij niza:

// program C ++ za tiskanje vseh
// permutacije niza
#vključi
z uporabo imenskega prostora std;
// Funkcija tiskanja permutacij niza
void findPermutations (niz str, int leftIndex, int rightIndex)
{
če (leftIndex == rightIndex)
{
cout << str << endl;
}
drugače
{
for (int i = leftIndex; i <= desni indeks; i ++)
{
swap (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str [leftIndex], str [i]);
}
}
}
// Koda voznika
int main ()
{
niz str1 = "MUO";
int size1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Permutacije" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
niz str2 = "AB";
int size2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Permutacije" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
niz str3 = "XYZ";
int size3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutacije" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
vrnitev 0;
}

Izhod:

str1: MUO
Permutacije MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacije AB:
AB
BA
str3: XYZ
Permutacije XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Povezano: Kako preveriti, ali je niz simetričen s programiranjem

Program Python za tiskanje vseh permutacij niza

Nato je koda Python za tiskanje vseh permutacij niza:

# Program Python za tiskanje vseh
# permutacije niza
def convertToString (Seznam):
return '' .join (Seznam)
# Funkcija za tiskanje permutacij niza
def findPermutacije (s, leftIndex, rightIndex):
if leftIndex == rightIndex:
tiskanje (convertToString (s))
drugače:
za i v razponu (leftIndex, rightIndex+1):
s [leftIndex], s [i] = s [i], s [leftIndex]
findPermutations (s, leftIndex+1, rightIndex)
# nazaj
s [leftIndex], s [i] = s [i], s [leftIndex]
# Koda gonilnika
str1 = "MUO"
velikost1 = len (str1)
s1 = seznam (str1)
print ("str1:", str1)
print ("Permutacije", str1, ":")
findPermutacije (s1, 0, velikost1-1)
str2 = "AB"
velikost2 = len (str2)
s2 = seznam (str2)
print ("str2:", str2)
print ("Permutacije", str2, ":")
findPermutacije (s2, 0, velikost2-1)
str3 = "XYZ"
velikost3 = len (str3)
s3 = seznam (str3)
print ("str3:", str3)
print ("Permutacije", str3, ":")
findPermutacije (s3, 0, velikost3-1)

Izhod:

str1: MUO
Permutacije MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacije AB:
AB
BA
str3: XYZ
Permutacije XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Povezano: Kako preveriti, ali sta dva niza med seboj anagrami

JavaScript program za tiskanje vseh permutacij niza

Natisnete permutacije v JavaScript:

// JavaScript program za tiskanje vseh
// permutacije niza
// Funkcija zamenjave znakov niza
zamenjava funkcij (str, leftIndex, i) {
naj temperatura;
naj tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
return (tempArray) .join ("");
}
// Funkcija tiskanja permutacij niza
function findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} drugo {
for (naj bo i = leftIndex; i <= desni indeks; i ++) {
str = swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = swap (str, leftIndex, i) ;;
}
}
}
// Koda voznika
var str1 = "MUO";
var size1 = str1.length;
document.write ("str1:" + str1 + "
");
document.write ("Permutacije" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.length;
document.write ("str2:" + str2 + "
");
document.write ("Permutacije" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.length;
document.write ("str3:" + str3 + "
");
document.write ("Permutacije" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);

Izhod:

str1: MUO
Permutacije MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacije AB:
AB
BA
str3: XYZ
Permutacije XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Povezano: Kako dokončati izziv FizzBuzz v 5 programskih jezikih

C Program za tiskanje vseh permutacij niza

Spodaj je program C, ki natisne vse permutacije niza:

// C program za tiskanje vseh
// permutacije niza
#vključi
#vključi
// Funkcija zamenjave znakov niza
void swap (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = temp;
}
// Funkcija tiskanja permutacij niza
void findPermutations (char str [], int leftIndex, int rightIndex)
{
če (leftIndex == rightIndex)
{
printf ("%s \ ⁠n", str);
}
drugače
{
for (int i = leftIndex; i <= desni indeks; i ++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Koda voznika
int main ()
{
char str1 [] = "MUO";
int size1 = strlen (str1);
printf ("str1: %s \ ⁠n", str1);
printf ("Permutacije %s: \ ⁠n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int size2 = strlen (str2);
printf ("str2: %s \ ⁠n", str2);
printf ("Permutacije %s: \ ⁠n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int size3 = strlen (str3);
printf ("str3: %s \ ⁠n", str3);
printf ("Permutacije %s: \ ⁠n", str3);
findPermutations (str3, 0, size3-1);
vrnitev 0;
}

Izhod:

str1: MUO
Permutacije MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacije AB:
AB
BA
str3: XYZ
Permutacije XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Tiskanje permutacij je enostavno

V tem članku ste se naučili, kako natisniti vse permutacije niza v več programskih jezikih. Čeprav ti vzorčni programi niso edini način za obvladovanje permutacij, so odličen začetek za tiste, ki jih šele uporabljajo v svoji kodi.

DelitiCvrkutatiE-naslov
11 najboljših spletnih mest za brezplačne spletne tečaje računalniškega programiranja

Z uporabo teh brezplačnih spletnih tečajev računalniškega programiranja lahko postanete odličen koder brez diplome računalništva.

Preberite Naprej

Sorodne teme
  • Programiranje
  • Programiranje
  • C Programiranje
  • JavaScript
  • Python
O avtorju
Yuvraj Chandra (58 objavljenih člankov)

Yuvraj je dodiplomski študent računalništva na Univerzi v Delhiju v Indiji. Navdušen je nad spletnim razvojem Full Stack. Ko ne piše, raziskuje globino različnih tehnologij.

Več od Yuvraja Chandre

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti