Autor Yuvraj Chandra
UdioCvrkutE -pošta

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

instagram viewer
: 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.

UdioCvrkutE -pošta
11 najboljih web mjesta za besplatne internetske tečajeve računalnog programiranja

Koristeći ove besplatne internetske tečajeve računalnog programiranja, možete postati odličan programer bez diplome računalnih znanosti.

Pročitajte Dalje

Povezane teme
  • Programiranje
  • Programiranje
  • C Programiranje
  • JavaScript
  • Piton
O autoru
Yuvraj Chandra (Objavljeno 58 članaka)

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.

Više od Yuvraja Chandre

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