backtracking-probleme rezolvate si grile

16
Lista probleme rezolvate informatica Lista probleme rezolvate informatica 1.Generarea combinarilor 1.Generarea combinarilor var sol:array[1..9] of integer; var sol:array[1..9] of integer; n,p:integer; n,p:integer; procedure back(k:integer); procedure back(k:integer); var i:integer; var i:integer; begin begin if k=p+1 then if k=p+1 then begin begin for i:=1 to p do for i:=1 to p do write (sol[i])l write (sol[i])l writeln; writeln; end; end; else else begin begin if k>1 then sol [k]:=sol[k if k>1 then sol [k]:=sol[k-1]; 1]; else sol[k]:=0; else sol[k]:=0; while sol[k]<n while sol[k]<n-p+k do p+k do begin begin sol[k]:=sol[k]+1; sol[k]:=sol[k]+1; back (k+1); back (k+1); end; end; end; end; end; end; begin begin write (‘n=’); readln(n); write (‘n=’); readln(n); write (‘p=’); readln(p); write (‘p=’); readln(p); back(i); back(i); end. end.

Upload: lumi-popescu

Post on 16-Apr-2015

882 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Backtracking-Probleme Rezolvate Si Grile

Lista probleme rezolvate informaticaLista probleme rezolvate informatica1.Generarea combinarilor1.Generarea combinarilorvar sol:array[1..9] of integer;var sol:array[1..9] of integer;

n,p:integer;n,p:integer;procedure back(k:integer);procedure back(k:integer);var i:integer;var i:integer;beginbegin

if k=p+1 thenif k=p+1 thenbeginbegin

for i:=1 to p dofor i:=1 to p dowrite (sol[i])lwrite (sol[i])lwriteln;writeln;

end;end;elseelse

beginbeginif k>1 then sol [k]:=sol[kif k>1 then sol [k]:=sol[k--1];1];

else sol[k]:=0; else sol[k]:=0; while sol[k]<nwhile sol[k]<n--p+k do p+k do beginbegin

sol[k]:=sol[k]+1;sol[k]:=sol[k]+1;back (k+1);back (k+1);

end;end;end;end;end;end;beginbegin

write (‘n=’); readln(n);write (‘n=’); readln(n);write (‘p=’); readln(p);write (‘p=’); readln(p);back(i);back(i);

end.end.

Page 2: Backtracking-Probleme Rezolvate Si Grile

2.Algoritmul de sortare cu metoda bulelor2.Algoritmul de sortare cu metoda bulelor

Type vector:=array[1..100] of integer;Type vector:=array[1..100] of integer;var x:vector;var x:vector;

n,I,f,t:integer;n,I,f,t:integer;gata:Boolean;gata:Boolean;

beginbeginwrite (‘n=’); readln(n);write (‘n=’); readln(n);for i:=1 to n do for i:=1 to n do beginbegin

write (‘x[‘,I,’); readln (x[i]);write (‘x[‘,I,’); readln (x[i]);end;end;f:=n;f:=n;repeat gata:=true;repeat gata:=true;for i:=1 to ffor i:=1 to f--1 do1 do

if x[i] > x[i+1] then if x[i] > x[i+1] then beginbegin

gata:=false;gata:=false;t:=x[i], x[i]:=x[i+1];t:=x[i], x[i]:=x[i+1];x[i+1]:=t;x[i+1]:=t;end;end;f:=ff:=f--1 until gata;1 until gata;for i:=1 to n do writeln (x[i]); readln;for i:=1 to n do writeln (x[i]); readln;end.end.

Page 3: Backtracking-Probleme Rezolvate Si Grile

3.Algoritmul de sortare rapida (Quick Sort)

Type vector:=array[1..100] of integer;Var i,n,k:integer;

a:vector;procedure poz (p,q:integer;

var k:integer;var a:vector);

var i,j,c:integer;begin

i1:=0;j1:= -1;i:=p;j;=q;

for while i<j do beginif a[i]>a[j} thenbeginc:=a[j];a[j]j:=a[i];a[i]:=c;c:=i1:i1:= -j1:j1:= -c;end;i:=i+i1;end;k:=I;end:end.end.

Page 4: Backtracking-Probleme Rezolvate Si Grile

4.Metoda injumatatirii unui interval

Var a:real;Function logn(a,p,q:real):real; var m:real;Begin

m:=(p+q)/2;if a:=1 then begin:=0;

else if abs(p-q)<0.001 then logn:=(p+q)/2else if (exp(p)-a)*(exp(m)-a)<0then log n:=log n(a,p,m)else log n:=log n(a,m,q)

end;begin

write (‘a=”); readln(a);writeln (‘logn(‘,a,’)=’, logn(a,0,a));readln;

end.

Page 5: Backtracking-Probleme Rezolvate Si Grile

5.Generarea permutarilor5.Generarea permutarilor

Type vector=array[1..100] of integer;Type vector=array[1..100] of integer;Var x:vector;Var x:vector;

n:integer;n:integer;procedure citire (var x:vector; var n:integer);procedure citire (var x:vector; var n:integer);var i:integer;var i:integer;beginbegin

write(‘n=’);write(‘n=’);readln (n);readln (n);for i:=1 to n dofor i:=1 to n dobegin write (‘x[‘,i,’]=’);begin write (‘x[‘,i,’]=’);

readln(x[i]);readln(x[i]);end;end;

end;end;procedure solutie;procedure solutie;var i:integer;var i:integer;beginbegin

write (‘(‘);write (‘(‘);for i:=1 to nfor i:=1 to n--1 do1 dowrite (x[i],’,’);write (x[i],’,’);writeln (x[n], ‘)’);writeln (x[n], ‘)’);

end;end;function continuare (k:integer):Boolean;function continuare (k:integer):Boolean;var i:integer; ok:=Boolean; ok:=true;var i:integer; ok:=Boolean; ok:=true;beginbegin

if k=1 then continuare:=true;if k=1 then continuare:=true;elseelse

for i:=1 to kfor i:=1 to k--1 do1 doif x[k]=x[i] then ok:=false;if x[k]=x[i] then ok:=false;

continuare:=ok;continuare:=ok;end;end;procedure back(k:integer); var i:integer;procedure back(k:integer); var i:integer;beginbegin

if (k=n+1) then solutie if (k=n+1) then solutie else begin else begin

for i:=1 to n dofor i:=1 to n dobeginbegin

if continuare (k) then back(k+1);if continuare (k) then back(k+1);end;end;

end;end;end.end.

Page 6: Backtracking-Probleme Rezolvate Si Grile

6.Problema colorarii hartiilor6.Problema colorarii hartiilorConst c:array[1..4] of char=(‘G’,’R’,’A’,’V’);Const c:array[1..4] of char=(‘G’,’R’,’A’,’V’);Type vector=array[1..50] of integer;Type vector=array[1..50] of integer;

Matrice=array[1..50,1..50] of integer;Matrice=array[1..50,1..50] of integer;Var A:matrice;Var A:matrice;

x:vector;x:vector;n:integer;n:integer;

procedure citire (var n:integer; var A:matrice);procedure citire (var n:integer; var A:matrice);var i,j:integer;var i,j:integer;begin begin

write (‘n=’); readln(n);write (‘n=’); readln(n);for i:=1 to n dofor i:=1 to n dofor j:=1 to n dofor j:=1 to n do

begin write (‘A[‘ ,i,’,’,’]=’);begin write (‘A[‘ ,i,’,’,’]=’);procedure solutie;procedure solutie;var i:integer;var i:integer;begin begin

for i=1 to n do for i=1 to n do writeln (‘tara’,i,’:’,C[x[i]];writeln (‘tara’,i,’:’,C[x[i]];

end;end;function continuare (k:integer):boolean; function continuare (k:integer):boolean; var i:integer;var i:integer;beginbegin

continuare:=time;continuare:=time;for i:=1 to kfor i:=1 to k--1 do1 doif (A[i,k]=1) and (x[i]=x[k]) thenif (A[i,k]=1) and (x[i]=x[k]) thencontinuare :=false;continuare :=false;

end;end;procedure back(k:integer);procedure back(k:integer);var i:integer;var i:integer;begin begin

if (k=n+1) then solutie if (k=n+1) then solutie elseelse

for i:=1 to 4 dofor i:=1 to 4 dobegin x[k]:=i;begin x[k]:=i;

if continuare (k) then if continuare (k) then back(k+1);back(k+1);

end;end;end;end;beginbegin

citire (n,A);citire (n,A);back (1);back (1);

end.end.

Page 7: Backtracking-Probleme Rezolvate Si Grile

7.Generarea aranjamentelor de n elemente luate cate p7.Generarea aranjamentelor de n elemente luate cate p

Type vector=array[1..20] of integer;Var x:vector;

n,p:integer;procedure solutie;var i:integer;begin

for i:=1 to p dowrite (x[i],’ ‘);

end;procedure back (k:integer);var i:integer;begin

if (k=p+1) then solutieelsefor i:=1 to n do

beginx[k]:=I;if continuare (k) then

back (k=1);end;end;begin

write(‘n=’); readln(n);wrte (‘p=’); readln(p);back(1);

end.

Page 8: Backtracking-Probleme Rezolvate Si Grile

8.Partile unui numar naturalType vector=array[1..20] of integer Var x:vector

n,s:integer;procedure solutie (k:integer);var i:integer;begin

for i:=1 tok dowrite (x[i],’ ‘);writeln;

end;function continuare (k:integer):Boolean;begin

continuare:=(x[k] + s)<n;end;procedure back(k:integer);begin

if (s=n) then solutie (k-1)else begin

x[k]:=0;while continuare (k) do

beginx[k]=x[k]+1;s:=s+x[k];back (k+1);end;

end;end;begin

write (‘n=’);readln (n);back(1);readln;

end.

Page 9: Backtracking-Probleme Rezolvate Si Grile

Lista grile rezolvateLista grile rezolvate

1.Utilizând metoda backtracking se generează în ordine lexicografică cuvintele de câte patru litere din mulţimea A={a,b,c,d,e}, cuvinte care nu conţin două vocale alăturate. Primele opt cuvinte generate sunt, în ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.

Câte dintre cuvintele generate încep cu litera b şi se termină cu litera e? a. 9 b. 15 c. 12 d. 20

Babe bebeBabe bebeBace beceBace beceBade bedeBade bedeBbbeBbbeBbce R:15 Bbce R:15 –– b.b.BbdeBbdeBcbeBcbeBcceBcceBcdeBcdeBdbeBdbeBdceBdceBddeBdde

Page 10: Backtracking-Probleme Rezolvate Si Grile

2.Utilizând metoda backtracking se generează în ordine lexicografică cuvintele de câte patru litere din mulţimea A={a,b,c,d,e}, cuvinte care nu conţin două vocale alăturate. Primele opt cuvinte generate sunt, în ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.

Care este ultimul cuvânt generat?

a. edcb b. eeee c. edde d. eded5555 Eeee F 5555 Eeee F 5554 Eeed F R: eded 5554 Eeed F R: eded –– dd5454 Eded A5454 Eded A5445 Edde F5445 Edde F

3.Utilizând metoda backtracking se generează în ordine lexicografică cuvintele de câte patru litere din mulţimea A={a,b,c,d,e}, cuvinte care nu conţin două vocale alăturate. Primele opt cuvinte generate sunt, în ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.

Care este penultimul cuvânt generat? a. edec b. eded c. edde d. edcb

5454 eded 5454 eded –– ultimul cuvant generat ultimul cuvant generat 5453 edec 5453 edec –– penultimul cuvant generat R: a.edecpenultimul cuvant generat R: a.edec

Page 11: Backtracking-Probleme Rezolvate Si Grile

4.Utilizând metoda backtracking se generează în ordine lexicografică cuvintele de câte patru litere din mulţimea A={a,b,c,d,e}, cuvinte care nu conţin două vocale alăturate. Primele opt cuvinte generate sunt, în ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe. Care este antepenultimul cuvânt generat?

a. edde b. eddb c. edeb d. edcb

5452 edeb 5452 edeb ––c.antepenultimul R:c.c.antepenultimul R:c.

5.Folosind modelul combinărilor se generează numerele naturale cu câte trei cifre distincte din mulţimea {1,2,3,7}, numere cu cifrele în ordine strict crescătoare, obţinându-se, în ordine: 123, 127, 137, 237. Dacă se utilizează exact aceeaşi tehnică pentru a genera numerele naturale cu patru cifre distincte din mulţimea {1,2,3,4,5,6,7,8}, câte dintre numerele generate au prima cifră 2 şi ultima cifră 7? (4p.)

a. 8 b. 3 c. 4 d. 6

2345 24582346 25672347 R: b.234824562457

Page 12: Backtracking-Probleme Rezolvate Si Grile

6. Utilizând metoda backtracking sunt generate numerele de 3 cifre, având toate cifrele distincte şi cu proprietatea că cifrele aflate pe poziţii consecutive sunt de paritate diferită. Ştiind că primele şase soluţii generate sunt, în această ordine, 103, 105, 107, 109, 123, 125, care este a zecea soluţie generată?

a. 145 b. 147 c. 230 d. 149

103 105 107 109 123 125 127 129 123 125 127 129 143 103 105 107 109 123 125 127 129 123 125 127 129 143 145 145 147 149 R: a.147 149 R: a.

7.Utilizând metoda backtracking sunt generate numerele de 3 cifre care au cifrele în ordine crescătoare, iar cifrele aflate pe poziţii consecutive sunt de paritate diferită. Ştiind că primele cinci soluţii generate sunt, în această ordine, 123, 125, 127, 129, 145, care este cel de al 8-lea număr generat?

a. 169 b. 149 c. 167 d. 147

123 125 127 129 145 147 149 123 125 127 129 145 147 149 167167 169 189 R: c.169 189 R: c.

8.Un algoritm de tip backtracking generează, în ordine lexicografică, toate şirurile de 8.Un algoritm de tip backtracking generează, în ordine lexicografică, toate şirurile de 5 5 cifre cifre 0 0 şi şi 1 1 cu proprietatea că nu există mai mult de două cifre cu proprietatea că nu există mai mult de două cifre 0 0 pe poziţii consecutive. Primele pe poziţii consecutive. Primele 7 7 soluţii soluţii generate sunt: generate sunt: 0010000100, , 0010100101, , 0011000110, , 0011100111, , 0100101001, , 0101001010, , 0101101011. Care este a . Care este a 88--a soluţie generată a soluţie generată de acest algoritm? de acest algoritm? (4p.) (4p.)

a. 01110 b. 01100 c. 01011 d. 01101a. 01110 b. 01100 c. 01011 d. 0110100100 00101 00110 00111 01001 01010 01011 00100 00101 00110 00111 01001 01010 01011 01110 01110 100 101 111 1001 1010 R: a.100 101 111 1001 1010 R: a.

Page 13: Backtracking-Probleme Rezolvate Si Grile

9.Folosind tehnica bactracking un elev a scris un program care generează toate numerele de câte n cifre (0<n≤9), cifrele fiind în ordine strict crescătoare. Dacă n este egal cu 5, câte numere vor fi generate de program?

R: 12346 12356 12456 13456 23456R: 12346 12356 12456 13456 23456

10.Un algoritm generează în ordine crescătoare toate numerele de n cifre, folosind doar cifrele 3, 5 şi 7. Dacă pentru n=5, primele 5 soluţii generate sunt 33333, 33335, 33337, 33353, 33355, precizaţi care sunt ultimele 3 soluţii generate, în ordinea generării.

R: 77773 77775 77777R: 77773 77775 77777

11.Pentru a scrie valoarea 10 ca sumă de numere prime se foloseşte metoda backtracking şi se generează, în această ordine, sumele distincte: 2+2+2+2+2, 2+2+3+3, 2+3+5, 3+7, 5+5. Folosind exact aceeaşi metodă, se scrie valoarea 9 ca sumă de numere prime. Care sunt primele trei soluţii, în ordinea generării lor?

10 : 2+2+2+2+2 9 : 2+2+2+310 : 2+2+2+2+2 9 : 2+2+2+32+2+3+3 2+2+52+2+3+3 2+2+52+3+5 2+72+3+5 2+73+7 3+3+33+7 3+3+35+55+5

Page 14: Backtracking-Probleme Rezolvate Si Grile

12.Trei băieţi, Alin, Bogdan şi Ciprian, şi trei fete, Delia, Elena şi Felicia, trebuie să formeze o echipă de 3 copii, care să participe la un concurs. Echipa trebuie să fie mixtă (adică să conţină cel puţin o fată şi cel puţin un băiat). Ordinea copiilor în echipă este importantă deoarece aceasta va fi ordinea de intrare a copiilor în concurs (de exemplu echipa Alin, Bogdan, Delia este diferită de echipa Bogdan, Alin, Delia). Câte echipe se pot forma, astfel încât din ele să facă parte simultan Alin şi Bogdan?

1. Alin,Bogdan,Delia / Alin,Delia,Bogdan1. Alin,Bogdan,Delia / Alin,Delia,Bogdan2. Bogdan,Alin, Delia / Bogdan.Delia,Alin2. Bogdan,Alin, Delia / Bogdan.Delia,Alin3. Delia, Alin,Bogdan / Delia,Bogdan,Alin3. Delia, Alin,Bogdan / Delia,Bogdan,Alin4. Alin,Bogdan,Elena / Alin,Elena,Bogdan4. Alin,Bogdan,Elena / Alin,Elena,Bogdan5. Bogdan,Alin,Elena / Bogdan,Elena,Alin5. Bogdan,Alin,Elena / Bogdan,Elena,Alin6. Elena,Alin,Bogdan / Elena,Bogdan,Alin6. Elena,Alin,Bogdan / Elena,Bogdan,Alin7. Alin,Bogdan,Felicia / Alin,Felicia,Bogdan7. Alin,Bogdan,Felicia / Alin,Felicia,Bogdan8. Bogdan,Alin,Felicia / Bogdan,Felicia, Alin => 188. Bogdan,Alin,Felicia / Bogdan,Felicia, Alin => 18

13.Cate numere cu exact doua cifre poti fi construite folosind doar cifre pare distincte?13.Cate numere cu exact doua cifre poti fi construite folosind doar cifre pare distincte?a.12 b.14 c.20 d.25a.12 b.14 c.20 d.25

24,26,28,42,46,48,62,64,68,82,84,86 R:a.1224,26,28,42,46,48,62,64,68,82,84,86 R:a.12

14.Un elev a scris un program care folosind metoda backtracking genereaza toate nr de 14.Un elev a scris un program care folosind metoda backtracking genereaza toate nr de cate 5 cifre, cifrele fiind in ordine strist crescatoare.Scrieti toate nr.generate de program care au cate 5 cifre, cifrele fiind in ordine strist crescatoare.Scrieti toate nr.generate de program care au prima cifra 5.prima cifra 5.

56 56 --> 59> 59

Page 15: Backtracking-Probleme Rezolvate Si Grile

15.Generand sirurile de meximum 3 caractere distincte din multimea {A,B,C,D,E}, ordonate lexicografic obtinem succesiv: A, AB,ABC, ABD… .Ce sir va fi generat imediat dupa BAE?

a.BCA b.CAB c.BC D.BEA R:c.BC

16.Utilizand med. Backtracking se genereaza permutarile cuv. Info.Daca primele 3 solutii generate sunt:fino, fion, fnio care este cea de-a cincia solutie?

a.foin b.fnoi c.foni d.ifon

info fino fion fnio fnoi R:b.fnoi

17.Un algoritm genereaza in ordine crescatoare toate numerele de n cifre (n<9), cu cifre distincte, care nu au doua cifre pare alcatuite.Daca pt n=5, primele 5 solutii generate sunt 10325,10327,10329,10345,10347, precizati care sunt urmatoarele 3 solutii generate, in ordinea obtinerii lor.

10349, 10365, 10367,10369,10389,10387,10389

18.Un algoritm genereaza in ordine descrescatoare, toate numerele de n cifre (n<9) cu cifre distincte care nu au doua cifre alaturate.Daca pt n=5 primele 5 solutii generate sunt 56789,456789,45679,45678,36789, preciuzati care sunt urmatoarele 3 solutii generate in oridnea obtinerii lor.

35679,35678,34789

Page 16: Backtracking-Probleme Rezolvate Si Grile

19.Urmatoarele probleme se refera la multimea de numere reale M={x1,x2…xn}.Care dintre aceste , comparativ cu celelalte, admite un algoritm care se incheie dupa un nr. Minim de pasi?

a.sortarea elementelor multimii M b.generarea elem.produsului cartezian MxMc.Determinarea elementului minim al multimii M d.Generarea tuturor permutarilor multimii M R: c.

20.Utilizand metoda backtracking sunt generate in ordine crescatoare toate numerele de 3 cifre ,a.i, cifrese sunt in ordine crescatoare, iar cifrele aflate pe pozitii consecutive sunt de paritatediferita.Stiind ca primele 3 solutii generate sunt, inaceasta ordine, 123,125,127, scrieti toatenr.generate care au suma cifrelor egala cu 12.

123,125,127,129145,147,149167,169199

R:129,147,345

Realizator: G. R.