Pe scurt
O combinare de elemente din valori distincte alege valori fără repetiție, iar ordinea nu contează. Din , combinările de lungime 2 sunt , și . Pentru a nu genera și 21 după 12, construim valorile în ordine strict crescătoare.
În detaliu
O combinare de elemente luate câte este o submulțime cu elemente: ordinea nu contează, iar elementele sunt distincte. Numărul lor este ; pentru și sunt 3. Pentru a genera fiecare combinare o singură dată, soluția se construiește ca un vector strict crescător: la fiecare poziție se aleg numai valori mai mari decât cea precedentă. Astfel apare o dată, ca 12, nu și ca 21. Invariantul este pentru primele poziții completate. Pentru există o singură combinare, cea vidă; pentru există o singură combinare, mulțimea întreagă. Se poate tăia o parte din ramuri limitând valorile: la poziția este nevoie de valori ulterioare, deci (cu pozițiile numerotate de la 1 la ).
Exemplul 1 — combinările de 2 din .
#include <iostream>
using namespace std;
int x[3];
void gen(int poz, int inceput) {
if (poz == 2) {
cout << x[0] << x[1] << " ";
return;
}
for (int c = inceput; c <= 3; ++c) {
x[poz] = c;
gen(poz + 1, c + 1);
}
}
int main() {
gen(0, 1);
return 0;
}
Programul afișează 12 13 23 . Apelul gen(0, 1) alege mai întâi 1; gen(1, 2) completează cu 2 și apoi cu 3, obținând 12 și 13. Revenind la prima poziție, alege 2 și completează cu 3, obținând 23. Ramura care începe cu 3 nu mai are o valoare mai mare disponibilă și nu afișează nimic. Astfel fiecare selecție de două elemente apare o singură dată.
Exemplul 2 — combinările de 2 din . Se obțin combinări, în ordinea 12 13 14 23 24 34. Dintre ele, cele cu suma elementelor 5 sunt 14 și 23. Dacă se cer combinările de 3 din cu suma 9, se testează suma la sfârșit sau pe parcurs: sunt combinări în total, iar suma 9 o au 135 și 234, adică 2 dintre ele.
Exemplul 3 — relații între numere de combinări. Numărul combinărilor respectă relațiile și . Pentru și : , în acord cu lista 12 13 14 23 24 34; pentru : . A doua relație are o interpretare directă: combinările care conțin elementul sunt , iar cele care nu îl conțin sunt . Dacă generarea nu ar impune ordinea crescătoare, din s-ar obține 6 șiruri de 2 elemente în loc de 3 combinări.
Exemplul 4 — legătura cu aranjamentele. Fiecare combinare de elemente se poate ordona în moduri, deci . Pentru și : , și , adică . Memoria de lucru pentru soluția curentă și apelurile recursive este proporțională cu ; scrierea tuturor rezultatelor cere cel puțin pași.
Exemplul 5 — tăierea ramurilor fără destule valori. Pentru combinările de 3 din , rezultatul este 123 124 134 234, adică combinări. Fără limită superioară, generarea face 15 apeluri ale funcției gen, deoarece încearcă și prefixe care nu se mai pot completa, cum sunt 3 sau 14. Dacă ciclul se oprește la , cu pozițiile numerotate de la 0, prima poziție primește doar 1 sau 2, a doua doar valori până la 3, iar apelurile scad la 10. Cele patru combinări rămân aceleași: limita taie doar ramuri fără soluții.
Pentru admitere
Nu confunda combinările cu aranjamentele. Fiecare mulțime de elemente are ordonări când elementele sunt distincte; de aceea . Pentru a număra combinările cu o proprietate, generează mulțimile în ordine crescătoare și verifică proprietatea pe fiecare. O limită superioară mai strânsă pentru valorile încercate poate evita ramuri care nu mai au destule valori pentru completare, dar nu schimbă mulțimea soluțiilor. La numărare, folosește simetria : alegerea celor elemente păstrate este echivalentă cu alegerea celor elemente excluse, deci . Într-un program, verifică lungimea soluției: la generarea combinărilor de elemente, afișarea apare când s-au completat exact poziții, nu . Dacă o combinare trebuie să conțină un element dat, acesta se fixează și se aleg celelalte elemente dintre cele rămase: posibilități, de pildă combinări de 3 elemente din care conțin elementul 1.
Exemplu în formatul examenului. Câte submulțimi cu 3 elemente ale mulțimii au suma elementelor egală cu 9?
- a) 1
- b) 2
- c) 3
- d) 10
Răspunsul corect este b). Submulțimile cu 3 elemente sunt . Suma 9 o au și ; celelalte au suma diferită, de pildă are 6, are 10, iar are 10. Deci sunt 2 astfel de submulțimi. Varianta d) este numărul tuturor combinărilor, fără condiția pe sumă.
Greșeli frecvente
- Greșit:
12și21sunt combinări diferite.Corect: la combinări ordinea nu contează, deci reprezintă aceeași mulțime. - Greșit: combinările pot fi generate fără restricția de ordine crescătoare, fiindcă duplicatele se elimină la final.Corect: restricția de ordine evită generarea duplicatelor.
- Greșit: .Corect: .
Testează-te pe această lecție
Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.
Înainte și după
Surse și referințe
Redactare proprie, conform programei:
- OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa XI intensiv; rocnee.eu
- OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa XI; plan de încadrare: OMEC 7723/2024, anexa 2, tabelele 1–25, legislatie.just.ro; filiera tehnologică: OMEC 7724/2024, anexa 4, tabelul calificării, legislatie.just.ro
- UNSTPB, Regulament admitere licență 2026, Anexa II-1.2 p. Anx II-14 și Anexa XI-3 p. Anx XI-6–7 (PDF p. 64, 120–121); admitere.pub.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 3–4; edu.ro
Documente consultate
- UNSTPB, admitere 2026, anexa XI-3, p. Anx XI-6–7
- Programa școlară de informatică, clasa a XI-a (OMECI 5099/2009, anexa 5), CNCE, p. 4–5; rocnee.eu
- Programa de bacalaureat la informatică, matematică-informatică (anexa 2 la OMECTS 4800/2010), Ministerul Educației, p. 4–5; edu.ro
- Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro
Desene: Redactare proprie (desen original), conform Programa școlară de informatică, clasa a XI-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu
