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.
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.
Z uporabo teh brezplačnih spletnih tečajev računalniškega programiranja lahko postanete odličen koder brez diplome računalništva.
Preberite Naprej
- Programiranje
- Programiranje
- C Programiranje
- JavaScript
- Python
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.
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