Trebate ispisati permutacije niza? Pokazat ćemo vam kako na nekoliko jezika.
Permutacija je raspored objekata u određenom redoslijedu. Možete permutirati niz duljine n u n! načine.
U ovom ćete članku naučiti kako pronaći sve permutacije datog niza pomoću C ++, Python, JavaScript i C.
Kako funkcioniraju permutacije?
Recimo da imate žicu str s "MUO" kao vrijednosti niza. Od vas je zatraženo da prikažete permutacije niza. Evo kako biste to učinili:
Primjer 1: Neka str = "MUO"
Permutacije "MUO" su:
- "MUO"
- "MOU"
- "UMO"
- "UOM"
- "OUM"
- "OMU"
Obratite pažnju na redoslijed vrijednosti. Evo još jednog primjera:
Primjer 2: Neka je str = "AB"
Sve permutacije "AB" su:
- "AB"
- "BA"
Također možete ispisati dvostruke permutacije ako se u danom nizu ponavljaju znakovi. (ABBA, na primjer)
Sada kada razumijete kako permutacije funkcioniraju, pogledajmo kako ih možete pronaći pomoću željenog programskog jezika.
Bilješka
: Dizajnirali smo sljedeće primjere koda za ispis permutacija za tri niza: MUO, AB i XYZ. Ako želite koristiti bilo koji od ovih kodova, kopirajte ih i promijenite ove nizove tako da odgovaraju vašem projektu.Povezano: Kako programiranjem pretvoriti znakove niza u suprotni slučaj
C ++ program za ispis svih permutacija niza
Ispod je C ++ program za ispis svih permutacija niza:
// C ++ program za ispis svih
// permutacije niza
#uključi
pomoću prostora imena std;
// Funkcija ispisa permutacija niza
void findPermutations (string str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
drugo
{
for (int i = leftIndex; i <= desni indeks; ja ++)
{
swap (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str [leftIndex], str [i]);
}
}
}
// Kod vozača
int main ()
{
string str1 = "MUO";
int size1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Permutacije" << str1 << ":" << endl;
findPermutacije (str1, 0, veličina1-1);
string str2 = "AB";
int veličina2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Permutacije" << str2 << ":" << endl;
findPermutacije (str2, 0, veličina2-1);
string str3 = "XYZ";
int size3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutacije" << str3 << ":" << endl;
findPermutacije (str3, 0, veličina3-1);
return 0;
}
Izlaz:
str1: MUO
Permutacije MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacije AB:
AB
BA
str3: XYZ
Permutacije XYZ -a:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Povezano: Kako provjeriti je li niz simetričan s programiranjem
Python program za ispis svih permutacija niza
Zatim, je li Python kod za ispis svih permutacija niza:
# Python program za ispis svih
# permutacije niza
def convertToString (List):
return '' .join (List)
# Funkcija ispisa permutacija niza
def findPermutacije (s, leftIndex, rightIndex):
if leftIndex == rightIndex:
ispis (convertToString (s))
drugo:
za i u rasponu (leftIndex, rightIndex+1):
s [leftIndex], s [i] = s [i], s [leftIndex]
findPermutacije (s, leftIndex+1, rightIndex)
# povratak
s [leftIndex], s [i] = s [i], s [leftIndex]
# Kod vozača
str1 = "MUO"
veličina1 = len (str1)
s1 = popis (str1)
print ("str1:", str1)
print ("Permutacije", str1, ":")
findPermutacije (s1, 0, veličina1-1)
str2 = "AB"
veličina2 = len (str2)
s2 = popis (str2)
print ("str2:", str2)
print ("Permutacije", str2, ":")
findPermutacije (s2, 0, veličina2-1)
str3 = "XYZ"
veličina3 = len (str3)
s3 = popis (str3)
print ("str3:", str3)
print ("Permutacije", str3, ":")
findPermutacije (s3, 0, veličina3-1)
Izlaz:
str1: MUO
Permutacije MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacije AB:
AB
BA
str3: XYZ
Permutacije XYZ -a:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Povezano: Kako provjeriti jesu li dva niza međusobno anagrami
JavaScript program za ispis svih permutacija niza
Evo kako ispisujete permutacije u JavaScriptu:
// JavaScript program za ispis svih
// permutacije niza
// Funkcija zamjene znakova niza
zamjena funkcija (str, leftIndex, i) {
neka temp;
neka tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
return (tempArray) .join ("");
}
// Funkcija ispisa permutacija niza
funkcija findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {{100} {101}
document.write (str + "
");
} else {
for (neka je i = leftIndex; i <= desni indeks; i ++) {
str = swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = swap (str, leftIndex, i) ;;
}
}
}
// Kod vozača
var str1 = "MUO";
var size1 = str1.length;
document.write ("str1:" + str1 + "
");
document.write ("Permutacije" + str1 + ":" + "
");
findPermutacije (str1, 0, veličina1-1);
var str2 = "AB";
var size2 = str2.length;
document.write ("str2:" + str2 + "
");
document.write ("Permutacije" + str2 + ":" + "
");
findPermutacije (str2, 0, veličina2-1);
var str3 = "XYZ";
var size3 = str3.length;
document.write ("str3:" + str3 + "
");
document.write ("Permutacije" + str3 + ":" + "
");
findPermutacije (str3, 0, veličina3-1);
Izlaz:
str1: MUO
Permutacije MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacije AB:
AB
BA
str3: XYZ
Permutacije XYZ -a:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Povezano: Kako ispuniti FizzBuzz izazov na 5 programskih jezika
C Program za ispis svih permutacija niza
Ispod je C program koji ispisuje sve permutacije niza:
// C program za ispis svih
// permutacije niza
#uključi
#uključi
// Funkcija zamjene znakova niza
void swap (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = temp;
}
// Funkcija ispisa permutacija niza
void findPermutations (char str [], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf ("%s \ nn", str);
}
drugo
{
for (int i = leftIndex; i <= desni indeks; ja ++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Kod vozača
int main ()
{
char str1 [] = "MUO";
int veličina1 = strlen (str1);
printf ("str1: %s \ n", str1);
printf ("Permutacije %s: \ n", str1);
findPermutacije (str1, 0, veličina1-1);
char str2 [] = "AB";
int veličina2 = strlen (str2);
printf ("str2: %s \ n", str2);
printf ("Permutacije %s: \ n", str2);
findPermutacije (str2, 0, veličina2-1);
char str3 [] = "XYZ";
int veličina3 = strlen (str3);
printf ("str3: %s \ n", str3);
printf ("Permutacije %s: \ n", str3);
findPermutacije (str3, 0, veličina3-1);
return 0;
}
Izlaz:
str1: MUO
Permutacije MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutacije AB:
AB
BA
str3: XYZ
Permutacije XYZ -a:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Ispis permutacija je jednostavan
U ovom članku naučili ste ispisati sve permutacije niza u nekoliko programskih jezika. Iako ovi uzorci programa nisu jedini način rješavanja permutacija, oni su odličan početak za one koji ih tek koriste u svom kodu.
Koristeći ove besplatne internetske tečajeve računalnog programiranja, možete postati odličan programer bez diplome računalnih znanosti.
Pročitajte Dalje
- Programiranje
- Programiranje
- C Programiranje
- JavaScript
- Piton
Yuvraj je student preddiplomskog studija Računarstva na Sveučilištu u Delhiju u Indiji. Oduševljen je Full Stack web razvojem. Kad ne piše, istražuje dubinu različitih tehnologija.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!
Kliknite ovdje za pretplatu