Nepieciešams izdrukāt virknes permutācijas? Mēs parādīsim, kā to izdarīt vairākās valodās.
Permutācija ir objektu izvietojums noteiktā secībā. Jūs varat permutēt n virknes virkni n! veidos.
Šajā rakstā jūs uzzināsit, kā atrast visas noteiktas virknes permutācijas, izmantojot C ++, Python, JavaScript un C.
Kā darbojas permutācijas?
Pieņemsim, ka jums ir virkne str ar virknes vērtībām “MUO”. Jums tika lūgts parādīt virknes permutācijas. Tālāk ir norādīts, kā rīkoties.
1. piemērs: Ļaujiet str = "MUO"
MUO permutācijas ir šādas:
- “MUO”
- "SM"
- “UMO”
- “UOM”
- “OUM”
- “OMU”
Ievērojiet vērtību secību. Šeit ir vēl viens piemērs:
2. piemērs: Ļaujiet str = "AB"
Visas “AB” permutācijas ir šādas:
- “AB”
- "BA"
Varat arī izdrukāt atkārtotas permutācijas, ja dotajā virknē ir atkārtotas rakstzīmes. (Piemēram, ABBA)
Tagad, kad jūs saprotat, kā darbojas permutācijas, apskatīsim, kā tās var atrast, izmantojot vēlamo programmēšanas valodu.
Piezīme: Mēs esam izstrādājuši šādus koda piemērus, lai izvadītu trīs virkņu permutācijas: MUO, AB un XYZ. Ja vēlaties izmantot kādu no šiem kodiem, kopējiet to un mainiet šīs virknes, lai tās atbilstu jūsu projektam.
Saistīts: Kā ar programmēšanu pārvērst virknes rakstzīmes pretējā gadījumā
C ++ programma, lai drukātu visas virknes atļaujas
Zemāk ir C ++ programma, lai izdrukātu visas virknes permutācijas:
// C ++ programma visu drukāšanai
// virknes permutācijas
#iekļaut
izmantojot nosaukumvietas std;
// Funkcija, lai drukātu virknes permutācijas
void findPermutations (string str, int leftIndex, int rightIndex)
{
ja (leftIndex == rightIndex)
{
cout << str << endl;
}
citādi
{
par (int i = pa kreisiIndekss; i <= labaisIndekss; es ++)
{
apmainīt (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
apmainīt (str [leftIndex], str [i]);
}
}
}
// Vadītāja kods
int main ()
{
virkne str1 = "MUO";
int izmērs1 = str1.izmērs ();
cout << "str1:" << str1 << endl;
cout << "Permutācijas" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
virkne str2 = "AB";
int izmērs2 = str2.izmērs ();
cout << "str2:" << str2 << endl;
cout << "Permutācijas" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
virkne str3 = "XYZ";
int izmērs3 = str3.izmērs ();
cout << "str3:" << str3 << endl;
cout << "Permutācijas" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
atgriezties 0;
}
Izeja:
str1: MUO
MUO atļaujas:
MUO
SM
UMO
UOM
OUM
OMU
str2: AB
AB atļaujas:
AB
ba
str3: XYZ
XYZ atļaujas:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Saistīts: Kā pārbaudīt, vai virkne ir simetriska ar programmēšanu
Python programma, lai drukātu visas virknes atļaujas
Tālāk ir Python kods, lai drukātu visas virknes permutācijas:
# Python programma visu drukāšanai
# virknes permutācijas
def convertToString (saraksts):
atgriezties ''. pievienoties (saraksts)
# Funkcija, lai drukātu virknes permutācijas
def findPermutations (s, leftIndex, rightIndex):
ja leftIndex == rightIndex:
drukāt (convertToString (s))
cits:
i diapazonā (leftIndex, rightIndex+1):
s [leftIndex], s [i] = s [i], s [leftIndex]
findPermutations (s, leftIndex+1, rightIndex)
# atpakaļceļš
s [leftIndex], s [i] = s [i], s [leftIndex]
# Vadītāja kods
str1 = "MUO"
izmērs1 = len (str1)
s1 = saraksts (str1)
drukāt ("str1:", str1)
drukāt ("Permutācijas", str1, ":")
findPermutations (s1, 0, izmērs1-1)
str2 = "AB"
lielums2 = len (str2)
s2 = saraksts (str2)
drukāt ("str2:", str2)
drukāt ("Permutācijas", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
lielums3 = len (str3)
s3 = saraksts (str3)
drukāt ("str3:", str3)
drukāt ("Permutācijas", str3, ":")
findPermutations (s3, 0, izmērs3-1)
Izeja:
str1: MUO
MUO atļaujas:
MUO
SM
UMO
UOM
OUM
OMU
str2: AB
AB atļaujas:
AB
ba
str3: XYZ
XYZ atļaujas:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Saistīts: Kā pārbaudīt, vai divas virknes ir viena otras diagrammas
JavaScript programma, lai drukātu visas virknes atļaujas
Lūk, kā drukāt permutācijas JavaScript:
// JavaScript programma visu drukāšanai
// virknes permutācijas
// Funkcija, lai mainītu virknes rakstzīmes
funkciju maiņa (str, leftIndex, i) {
ļaujiet temperatūrai;
ļaujiet tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
atgriezties (tempArray). pievienoties ("");
}
// Funkcija, lai drukātu virknes permutācijas
function findPermutations (str, leftIndex, rightIndex) {
ja (leftIndex == rightIndex) {
document.write (str + "
");
} vēl {
par (lai i = pa kreisiIndekss; i <= labaisIndekss; es ++) {
str = mijmaiņas darījums (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = maiņa (str, leftIndex, i) ;;
}
}
}
// Vadītāja kods
var str1 = "MUO";
var izmērs1 = str1.garums;
document.write ("str1:" + str1 + "
");
document.write ("Permutācijas" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var lielums2 = str2.garums;
document.write ("str2:" + str2 + "
");
document.write ("Permutācijas" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var lielums3 = str3.garums;
document.write ("str3:" + str3 + "
");
document.write ("Permutācijas" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);
Izeja:
str1: MUO
MUO atļaujas:
MUO
SM
UMO
UOM
OUM
OMU
str2: AB
AB atļaujas:
AB
ba
str3: XYZ
XYZ atļaujas:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Saistīts: Kā pabeigt FizzBuzz izaicinājumu 5 programmēšanas valodās
C Programma visu virknes atļauju drukāšanai
Zemāk ir C programma, kas izdrukā visas virknes permutācijas:
// C programma visu drukāšanai
// virknes permutācijas
#iekļaut
#iekļaut
// Funkcija, lai mainītu virknes rakstzīmes
void swap (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = temperatūra;
}
// Funkcija, lai drukātu virknes permutācijas
void findPermutations (char str [], int leftIndex, int rightIndex)
{
ja (leftIndex == rightIndex)
{
printf ("%s \ n", str);
}
citādi
{
par (int i = pa kreisiIndekss; i <= labaisIndekss; es ++)
{
mijmaiņas darījums (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
mijmaiņas darījums (str, leftIndex, i);
}
}
}
// Vadītāja kods
int main ()
{
char str1 [] = "MUO";
int lielums1 = strlen (str1);
printf ("str1: %s \ n", str1);
printf (" %s atļaujas: \ n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int lielums2 = strlen (str2);
printf ("str2: %s \ n", str2);
printf ("Permutācijas %s: \ n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int lielums3 = strlen (str3);
printf ("str3: %s \ n", str3);
printf (" %s atļaujas: \ n", str3);
findPermutations (str3, 0, size3-1);
atgriezties 0;
}
Izeja:
str1: MUO
MUO atļaujas:
MUO
SM
UMO
UOM
OUM
OMU
str2: AB
AB atļaujas:
AB
ba
str3: XYZ
XYZ atļaujas:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Permutāciju drukāšana ir vienkārša
Šajā rakstā jūs esat iemācījušies drukāt visas virknes permutācijas vairākās programmēšanas valodās. Lai gan šīs paraugprogrammas nav vienīgais veids, kā apstrādāt permutācijas, tās ir lielisks sākums tiem, kas ir jauni, lai tās izmantotu savā kodā.
Izmantojot šos bezmaksas tiešsaistes datorprogrammēšanas kursus, jūs varat kļūt par lielisku kodētāju bez datorzinātņu grāda.
Lasīt Tālāk
- Programmēšana
- Programmēšana
- C Programmēšana
- JavaScript
- Python
Yuvraj ir datorzinātņu bakalaura students Deli universitātē, Indijā. Viņš aizraujas ar Full Stack tīmekļa izstrādi. Kad viņš neraksta, viņš pēta dažādu tehnoloģiju dziļumu.
Abonējiet mūsu biļetenu
Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!
Noklikšķiniet šeit, lai abonētu