← Subiecte de Titularizare
Titularizare 2025 · Subiectul II, problema 1

Backtracking — simulator

II.1 subprogram Liste Șiruri caractere Matrice Backtracking
II.2 eficient Greedy intervale Reuniune Interclasare LIS LIS tije LCS Kadane Frecvențe Căutare binară
pas 0 / 0
📋 Enunțul problemei (Titularizare 2025)

La o casierie sunt bancnote de n cupiuri diferite, în număr suficient. Se cere să se determine toate modalitățile de a obține o sumă s, afișând pentru fiecare soluție numărul de bancnote din fiecare cupiură folosită efectiv, în forma 3x1leu 1x2lei 1x5lei.

Subprogramul tipar() nu are niciun parametru — lucrează pe variabilele globale n, c și b.

Exemplul oficial: pentru s = 10 și cupiurile (1, 2, 3, 5) se obțin 20 de soluții, printre care 2x5lei și 3x1leu 1x2lei 1x5lei.

Notă: exemplul oficial generează 178 de apeluri recursive — un arbore prea mare ca să încapă pe ecran. Simulatorul rulează pe un caz redus: s = 5 cu cupiurile (1, 2, 3), care dă 5 soluții în 31 de apeluri. Algoritmul e exact același.
startApasă „Pas înainte”. Urmărește arborele de explorare și, mai ales, momentele de revenire — acolo se reface starea, ceea ce nu se vede citind codul.

Arborele de explorare fiecare nod = un apel back(k, rest)

apelul curent lanțul de apeluri active soluție găsită fundătură

Starea algoritmului vectorul b și soluțiile

Codul C++ linia activă e evidențiată

Cod C++

    

Algoritmul în limbaj natural pasul curent e evidențiat