Se generează prin metoda backtracking, submulțimi nevide ale mulțimii {1,2,3} astfel: {1},{1,2},{1,2,3},{1,3},{2},{2,3},{3}.Folosind aceeași metodă pentru a genera submulțimile nevide ale mulțimii {1,2,3,4,5,6,7}, identificați care este a 10-a, respectiv a 11-a soluție generată.
- {1,2,3,4,6}, {1,2,3,4,6,7}
- {1,2,3,4,7}, {1,2,3,4,6,7}
- {1,2,3,4,6,7}, {1,2,3,5}
- {1,2,3,4,6,7}, {1,2,3,4,7}
Fiecare soluție parțială (elemente în ordine crescătoare) este afișată, apoi se încearcă extinderea ei cu un element mai mare. Ordinea începe: {1}, {1,2}, {1,2,3}, {1,2,3,4}, {1,2,3,4,5}, {1,2,3,4,5,6}, {1,2,3,4,5,6,7}, {1,2,3,4,5,7}, {1,2,3,4,6}, apoi a 10-a {1,2,3,4,6,7} și a 11-a {1,2,3,4,7}.Se dă subprogramul următor (s-a notat cu mod restul împărțirii lui x la y și cu div câtul împărțirii lui x la y).Știind că k=3 și n=1234567, identificați valorile parametrilor subprogramului determinare după apelul determinare(k,n).
Subprogram determinare(întreg k transmis prin valoare, întreg lung n transmis prin referință)
început
întreg lung m,p1←1,p2←1,c←0
m←n
cât timp (m<>0) execută
început
m←m div 10
c←c+1
p2←p2*10
dacă (c<=k) atunci p1←p1*10
sfârșitcâttimp
p2←p2 div p1
n←n mod p2*p1+n div p2
k←k-1
sfârșitsubprogram
- 3 și 4567123
- 2 și 4567123
- 3 și 12456734
- 2 și 3456712
n=1234567 are c=7 cifre, deci p2=107, iar p1=103 (se înmulțește doar cât timp c≤k=3). Apoi p2=107div103=104 și n=(1234567mod104)⋅103+1234567div104=4567⋅1000+123=4567123: primele 3 cifre sunt mutate la final.n este transmis prin referință, deci noua valoare ajunge în apelant. k este transmis prin valoare: k←k-1 modifică doar copia locală, iar după apel k rămâne 3. Răspuns: 3 și 4567123.