Reikia spausdinti eilutės permacijas? Mes parodysime, kaip tai padaryti keliomis kalbomis.
Permutacija yra objektų išdėstymas tam tikra tvarka. Galite permuoti n ilgio eilutę n n! būdai.
Šiame straipsnyje sužinosite, kaip rasti visas tam tikros eilutės permacijas naudojant C ++, Python, JavaScript ir C.
Kaip veikia permacijos?
Tarkime, kad turite stygą str su eilutės reikšmėmis „MUO“. Jūsų buvo paprašyta parodyti eilutės permacijas. Štai kaip elgtis:
1 pavyzdys: Tegul str = "MUO"
„MUO“ permutacijos yra šios:
- „MUO“
- "SM"
- „UMO“
- "UOM"
- "OUM"
- „OMU“
Atkreipkite dėmesį į reikšmių tvarką. Štai dar vienas pavyzdys:
2 pavyzdys: Tegul str = "AB"
Visos „AB“ permacijos yra šios:
- "AB"
- „BA“
Taip pat galite spausdinti pasikartojančias permacijas, jei nurodytoje eilutėje yra pasikartojančių simbolių. (Pvz., ABBA)
Dabar, kai suprantate, kaip veikia permutacijos, pažvelkime, kaip jas galite rasti naudodami pageidaujamą programavimo kalbą.
Pastaba: Mes sukūrėme šiuos kodo pavyzdžius, kad išvestume trijų eilučių permacijas: MUO, AB ir XYZ. Jei norite naudoti šį kodą, nukopijuokite jį ir pakeiskite šias eilutes, kad jos atitiktų jūsų projektą.
Susijęs: Kaip programuojant konvertuoti eilutės simbolius į priešingą atvejį
C ++ programa, skirta spausdinti visas eilutės permacijas
Žemiau yra C ++ programa, skirta spausdinti visas eilutės permacijas:
// C ++ programa, skirta visiems spausdinti
// eilutės permutacijos
#įtraukti
naudojant vardų srities standartą;
// Funkcija spausdinti eilutės permacijas
void findPermutations (eilutė str, int leftIndex, int rightIndex)
{
jei (leftIndex == rightIndex)
{
cout << str << endl;
}
Kitas
{
for (int i = leftIndex; i <= dešinysis indeksas; aš ++)
{
apsikeitimas (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
apsikeitimas (str [leftIndex], str [i]);
}
}
}
// Vairuotojo kodas
int main ()
{
eilutė str1 = "MUO";
int dydis1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Permutacijos" << str1 << ":" << endl;
findPermutations (str1, 0, dydis1-1);
eilutė str2 = "AB";
int dydis2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Permutacijos" << str2 << ":" << endl;
findPermutations (str2, 0, dydis2-1);
eilutė str3 = "XYZ";
int dydis3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutacijos" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
grįžti 0;
}
Išvestis:
str1: MUO
MUO leidimai:
MUO
SM
UMO
UOM
OUM
OMU
str2: AB
AB leidimai:
AB
BA
str3: XYZ
XYZ leidimai:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Susijęs: Kaip patikrinti, ar eilutė yra simetriška programuojant
„Python“ programa, skirta spausdinti visas eilutės permacijas
Kitas yra „Python“ kodas, skirtas spausdinti visas eilutės permacijas:
# „Python“ programa, skirta visiems spausdinti
# eilutės permutacijos
def convertToString (sąrašas):
grįžti “. prisijungti (sąrašas)
# Funkcija spausdinti eilutės permacijas
def findPermutations (s, leftIndex, rightIndex):
jei leftIndex == rightIndex:
spausdinti (convertToString (s))
Kitas:
i diapazone (leftIndex, rightIndex+1):
s [leftIndex], s [i] = s [i], s [leftIndex]
findPermutations (s, leftIndex+1, rightIndex)
# atgal
s [leftIndex], s [i] = s [i], s [leftIndex]
# Vairuotojo kodas
str1 = "MUO"
dydis1 = len (str1)
s1 = sąrašas (str1)
spausdinti ("str1:", str1)
spausdinti ("Permutacijos", str1, ":")
findPermutacijos (s1, 0, dydis1-1)
str2 = "AB"
dydis2 = len (str2)
s2 = sąrašas (str2)
spausdinti ("str2:", str2)
spausdinti ("Permutacijos", str2, ":")
findPermutations (s2, 0, dydis2-1)
str3 = "XYZ"
dydis3 = len (str3)
s3 = sąrašas (str3)
spausdinti ("str3:", str3)
spausdinti ("Permutacijos", str3, ":")
findPermutations (s3, 0, dydis 3-1)
Išvestis:
str1: MUO
MUO leidimai:
MUO
SM
UMO
UOM
OUM
OMU
str2: AB
AB leidimai:
AB
BA
str3: XYZ
XYZ leidimai:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Susijęs: Kaip patikrinti, ar dvi eilutės yra viena kitos anagramos
„JavaScript“ programa, skirta spausdinti visas eilutės permacijas
Štai kaip spausdinate permacijas „JavaScript“:
// „JavaScript“ programa, skirta visiems spausdinti
// eilutės permutacijos
// Funkcija, skirta pakeisti eilutės simbolius
funkcijų keitimas (str, leftIndex, i) {
leiskite temp;
tegul tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
return (tempArray). prisijungti ("");
}
// Funkcija spausdinti eilutės permacijas
function findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} Kitas {
for (tegul i = leftIndex; i <= dešinysis indeksas; aš ++) {
str = apsikeitimas (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = apsikeitimas (str, leftIndex, i) ;;
}
}
}
// Vairuotojo kodas
var str1 = "MUO";
var dydis1 = str1.ilgis;
document.write ("str1:" + str1 + "
");
document.write ("Permutacijos" + str1 + ":" + "
");
findPermutations (str1, 0, dydis1-1);
var str2 = "AB";
var dydis2 = str2.ilgis;
document.write ("str2:" + str2 + "
");
document.write ("Permutacijos" + str2 + ":" + "
");
findPermutations (str2, 0, dydis2-1);
var str3 = "XYZ";
var dydis3 = str3.ilgis;
document.write ("str3:" + str3 + "
");
document.write ("Permutacijos" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);
Išvestis:
str1: MUO
MUO leidimai:
MUO
SM
UMO
UOM
OUM
OMU
str2: AB
AB leidimai:
AB
BA
str3: XYZ
XYZ leidimai:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Susijęs: Kaip įveikti „FizzBuzz“ iššūkį 5 programavimo kalbomis
C Programa, skirta spausdinti visas eilutės permacijas
Žemiau yra C programa, kuri spausdina visas eilutės permacijas:
// C programa, skirta visiems spausdinti
// eilutės permutacijos
#įtraukti
#įtraukti
// Funkcija, skirta pakeisti eilutės simbolius
negaliojantis apsikeitimas (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = temperatūra;
}
// Funkcija spausdinti eilutės permacijas
void findPermutations (char str [], int leftIndex, int rightIndex)
{
jei (leftIndex == rightIndex)
{
printf ("%s \ n", str);
}
Kitas
{
for (int i = leftIndex; i <= dešinysis indeksas; aš ++)
{
apsikeitimas (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
apsikeitimas (str, leftIndex, i);
}
}
}
// Vairuotojo kodas
int main ()
{
char str1 [] = "MUO";
int dydis1 = strlen (str1);
printf ("str1: %s \ n", str1);
printf (" %s leidimai: \ n", str1);
findPermutations (str1, 0, dydis1-1);
char str2 [] = "AB";
int dydis2 = strlen (str2);
printf ("str2: %s \ n", str2);
printf ("Permutacijos %s: \ n", str2);
findPermutations (str2, 0, dydis2-1);
char str3 [] = "XYZ";
int dydis3 = strlen (str3);
printf ("str3: %s \ n", str3);
printf ("Permutacijos %s: \ n", str3);
findPermutations (str3, 0, size3-1);
grįžti 0;
}
Išvestis:
str1: MUO
MUO leidimai:
MUO
SM
UMO
UOM
OUM
OMU
str2: AB
AB leidimai:
AB
BA
str3: XYZ
XYZ leidimai:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Permutacijų spausdinimas yra lengvas
Šiame straipsnyje jūs išmokote spausdinti visas eilutės permacijas keliomis programavimo kalbomis. Nors šios pavyzdinės programos nėra vienintelis būdas tvarkyti permutacijas, jos yra puiki pradžia tiems, kurie tik pradeda jas naudoti savo kode.
Naudodamiesi šiais nemokamais internetiniais kompiuterių programavimo kursais, galite tapti puikiu koduotoju be kompiuterių mokslo laipsnio.
Skaityti toliau
- Programavimas
- Programavimas
- C programavimas
- „JavaScript“
- Python

Yuvraj yra kompiuterių mokslo bakalauro studentas Delyje, Indijoje. Jis aistringas „Full Stack“ žiniatinklio kūrimui. Kai jis nerašo, jis tyrinėja skirtingų technologijų gylį.
Prenumeruokite mūsų naujienlaiškį
Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!
Norėdami užsiprenumeruoti, spustelėkite čia