Aceeași schelă din Modulul 01, îmbrăcată în problemele care au făcut istoria metodei: reginele pe tabla de șah, colorarea hărții, plata unei sume — și regina problemelor de optim, comis-voiajorul.
Toate folosesc schema din M01; diferă doar ce înseamnă sol[k] și cum validezi.
Poziția k ARE sens: la regine, k = linia și x[k] = coloana; la colorare, k = țara și x[k] = culoarea. Soluția = succesiune de perechi (k, x[k]).
Cari după tine un „subtotal": partițiile unui număr, plata unei sume cu monede. Validarea folosește suma de până acum — dacă ai depășit, tai ramura PE LOC.
Nu vrei toate soluțiile, ci pe CEA MAI BUNĂ: comis-voiajorul. Generezi complet, dar reții minimul — și tai ramurile deja mai scumpe decât el.
Toate cele 59 de grile, exact ca la BAC, grupate pe modele. Apasă pe o categorie ca să-i deschizi întrebările, apoi alege un răspuns — verde = corect, roșu = greșit, plus explicația.
Prima problemă de implementare. Avem 4 culori: Albastru, Galben, Verde, Roșu. Cum colorăm regiunile unor figuri astfel încât două regiuni vecine să NU aibă aceeași culoare?
Țara k primește culoarea sol[k]; vecinii nu pot avea aceeași culoare. Vecinătățile: A–B, A–C, B–C, B–D, C–D.
Modelarea (ca la orice problemă de backtracking): poziția k = o regiune de colorat; sol[k] = culoarea ei (1..4 = A, G, V, R); validarea = niciun vecin deja colorat nu are aceeași culoare. Vecinătățile le ținem într-o matrice vecin[i][k].
🤔 Încearcă tu: 4 culori per regiune, validarea = niciun vecin colorat nu are aceeași culoare. Scrie valid() și bt().
▶ Codul rulează pe un exemplu mic — 3 regiuni care se ating toate (triunghi: 1-2, 1-3, 2-3) — și găsește TOATE colorările, nu doar prima (exact ca backtracking-ul adevărat: după o soluție, revine și caută următoarea). Urmărește în același timp linia de cod și harta:
Sunt de rezolvat 5 figuri. La fiecare, colorează colțurile (țările) cu cele 4 culori astfel încât colțuri vecine să NU fie identice. Alege o figură, apoi rulează backtracking-ul pas cu pas:
4 regine pe tabla 4×4, fără să se atace: linia k primește regina în coloana x[k]. Validare: coloană diferită ȘI diagonale libere.
Țara k primește culoarea x[k]; vecinii nu pot avea aceeași culoare. Vecinătățile: A–B, A–C, B–C, B–D, C–D.
În câte moduri plătești suma S cu monede de 1, 2 și 5 lei? Soluția crește NEDESCRESCĂTOR (ca la combinări!) și cară suma parțială.
Croaziera din programă: vizitezi fiecare insulă O dată, doar pe trasee acceptate, și revii la plecare — cu cost total MINIM.
Soluția = o permutare a orașelor (deci schema de la M01!), cu trei adaosuri: ① validare: există drum acceptat între sol[k−1] și x[k] · ② valoarea parțială: costul acumulat · ③ la soluție completă NU afișezi — COMPARI: if (cost < minim) minim = cost;
Cinci întrebări — în stil BAC.
Problemele clasice, condensate.