Documente Academic
Documente Profesional
Documente Cultură
GENERAREA PERMUTARILOR
Enunţ: Se citeste de la tastatura un numar n natural nenul. Să se genereze toate permutările mulţimii
M={1,2,...,n}. Numărul de soluţii: n!
Permutările de n elemente sunt mulţimi ordonate ce conţin elementele mulţimii{1,2,...,n} în care fiecare
element apare o singură dată. Orice permutare este alcătuită din toate elementele mulţimii, elementele fiind
distincte.
Exemplu: n=3 M={1, 2, 3} numarul de solutii 3!=1*2*3=6
Solutiile sunt: {1,2,3}, {1.3,2}, {2,1,3}, {2,3,1}, {3,1,2}, {3,2,1}
Exemplificare:
K=3 0 1 2 3 0 1 2 3 0 1 2 3
K=2 0 1 2 2 2 2 2 2 3 3 3 3 3 3 0 1 1 1 1 1
K=1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2
K=3 0 1 2 3 0 2 3 0 1 2 3
K=2 1 2 3 3 3 3 3 3 0 1 1 1 1 1 2 2 2 2 2 2 3
K=1 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
Descriere:
Avem o stiva, k reprezinta nivelul in stiva, pe fiecare nivel in stiva se pune o valoare care se afla inaintea tuturor valorilor
din multime, in cazul nostru 0, acest pas se numeste initializare, fiecare nivel va fi initializat cu 0 apoi se cauta
succesorul. Succesor de 0 este 1 care este prima valoare din multime, se apeleaza o functie care verifica nivelul k daca
este corect completat.
Urcam in stiva, k=2, se pune 0, se cauta succesor adica 1, se apeleaza functia care verifica daca 1 se mai afla in stiva. 1
nu este bun si se cauta alt succesor adica 2 nu se mai gaseste in stiva deci este bun atunci urcam in stiva k=3. Se
initializeaza nivelul 3 cu 0. Succesor de 0 este 1 dar nu este bun
Succesor de 1 este 2 care nu este bun. Succesor de 2 este 3, este bun deci am gasit solutia, se tipareste.
In contimuare se cauta succesor pt 3 dar elementele multimii sunt {1.2.3} atunci coboram in stiva la k=2, unde succesor
de 2 este 3 care este bun.
Urcam k=3, se initializeaza nivelul 3 cu 0, se cauta succesor de 0 este 1, care nu este bun, succesor de 1 este 2 care este
bun si am gasit solutia.
Succesor de 2 este 3 care nu este bun atunci coboram in stiva, k=2 unde avem val 3, succesor de 3 nu exista coboram in
stiva k=1, unde avem valaorea 1.
Succesor de 1 este 2 care este bun, urcam in stiva k=2, initializam cu 0, succesorul este 1 care este bun, urcam k=3.
Continuam pana cand stiva este vida si algoritmul se opreste.
1
GENERAREA COMBINĂRILOR
Enunţ: Se citesc de la tastatura doua numere naturale nenule n si p (p≤n). Să se genereze toate combinările
de p elemente ale mulţimii{1,2,...,n}.
𝑛!
Numărul de soluţii∶ 𝑝!(𝑛−𝑝)!: (atentie: 0!=1, daca n=p avem o singura solutie)
Combinările de n elemente luate câte p reprezintă o modalitate de a alege p elemente din cele n date, fără a
conta ordinea elementelor. Două mulţimi care au aceleaşi elemente, dar aşezate în altă ordine se consider
egale.
𝑛! 3! 6
Exemplu: n=3, p=2 M={1,2,3} Numărul de soluţii: 𝑝!(𝑛−𝑝)! = 2!(3−2)! = 2 = 3
Soluţiile: {1,2} {1,3} {2,3}
K=2 0 1 2 3 0 1 2 3 0 1 2 3
K=1 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3
x[k]≤x[k-1]
GENERAREA ARANJAMENTELOR
Enunţ: Se citesc de la tastatura doua numere naturale nenule n si p (p<n). Să se genereze toate aranjamentele
de p elemente ale mulţimii {1,2,...,n}.
𝑛!
Numărul de soluţii: (𝑛−𝑝)!
Aranjamentele de n elemente luate câte p reprezintă o modalitate de a selecta şi aranja p elemente din cele n
date. Două mulţimi care au aceleaşi elemente, dar aşezate în altă ordine se consideră distincte.
𝑛! 3! 6
Exemplu: n=3, p=2 M={1,2,3} Numărul de soluţii: (𝑛−𝑝)! = (3−2)! = 1 = 6
Soluţiile:
{1,2} {1,3}{2,1} {2,3} {3,1} {3,2}
K=2 0 1 2 3 0 1 2 3 0 1 2 3
K=1 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3
GENERAREA SUBMULTIMILOR
Submulţimile reprezintă o modalitate de generarea submultimilor a forma grupuri cu cel puţin un element
şi cel mult n elemente din cele n elemente ale unei mulţimi. Două submulţimi care au aceleaşi elemente, dar
aşezate în altă ordine se consider egale.
Exemplu: n=3 M={1,2,3} Numărul de soluţii: 23-1=7
Soluţiile:{1};{1,2};{1,2,3};{1,3};{2};{2,3};{3}
K=3 0 1 2 3 0 1 2 3 0 1 2 3
K=2 0 1 2 2 2 2 2 2 3 3 3 3 3 3 0 1 1 1 1 1 1 2
K=1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
K=3 0 1 2 3
K=2 3 3 3 3 3
K=1 2 2 2 2 2 2 3
2
GENERAREA PRODUSULUI CARTEZIAN
Enunţ: Se dau n mulţimi M1, M2,……Mn. Să se genereze toate elementele produsului cartezian M1 x M2
x……x Mn.
Numărul de soluţii: n*n*…*n
Produsul cartezian a n mulţimi reprezintă o mulţime, numită şi mulţimea produs, formată din ansamblul tuturor
grupurilor de n elementele în care prima componenta aparţine mulţimii M1, a doua component aparţine
mulţimii M2,..., a n component aparţine mulţimii Mn.
Soluţiile:{1,1,1};{1,1,2};{1,1,3};{1,2,1};{1,2,2};{1,2,3};{1,3,1};{1,3,2};{1,3,3};
{2,1,1};{2,1,2};{2,1,3};{2,2,1};{2,2,2};{2,2,3};{2,3,1}{2,3,2};{2,3,3};
{3,1,1};{3,1,2};{3,1,3};{3,2,1};{3,2,2};{3,2,3};{3,3,1};{3,3,2};{3,3,3}
K=3 0 1 2 3 0 1 2 3 0 1 2 3
K=2 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 0 1
K=1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2
K=3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
K=2 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 0 1 1 1 1 1 1
K=1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3
K=3 0 1 2 3 0 1 2 3
K=2 2 2 2 2 2 2 3 3 3 3 3 3
K=1 3 3 3 3 3 3 3 3 3 3 3 3 3
Se citeste de la tastatura un numar natural n>0. Se cere sa se tipareasca toate modurile de descompunere a lui
ca suma de numere naturale.
Exemplificarea functionarii algoritmului pentru n=4:
K=4 0 0 0 1 0 0 0
K=3 0 0 1 1 2 0 1 0 1 0
K=2 0 1 1 1 1 2 2 3 0 1 2 0 1
K=1 1 1 1 1 1 1 1 1 2 2 2 3 3 4
suma S=0 S=1 S=2 S=3 S=2 S=1 S=3 S=1 S=0 S=3 S=2 S=0 S=3 S=0
Nu cunoasteme lungimea unei solutii, ea poate fi cuprinsa intre 1, in cazul in care numarul in sine constituie
o descompunere a sa si n, atunci cand numarul este descompus ca suma a n numere egale cu 1.