+ All Categories
Home > Documents > Grile si probleme

Grile si probleme

Date post: 07-Feb-2016
Category:
Upload: gusty
View: 35 times
Download: 0 times
Share this document with a friend
Description:
Grile si probleme. Cremine Denisa. 1 . Generarea combinărilor Se citesc două numere naturale n şi p . Să se genereze toate combinările de n elemente luate câte p ale mulţimii {1,2,…,n}. type vector=array [0..20] of integer; var x:vector; n,p:integer; - PowerPoint PPT Presentation
29
Grile si probleme Cremine Denisa
Transcript
Page 1: Grile si probleme

Grile si probleme

Cremine Denisa

Page 2: Grile si probleme

1.Generarea combinărilorSe citesc două numere naturale n şi p. Să se genereze toate combinările de n elemente luate câte p ale mulţimii {1,2,…,n}.

type vector=array [0..20] of integer; var x:vector; n,p:integer;procedure solutie; var i:integer;begin for i: 1 to p do write (x[i],' '); writeln; end;procedure back(k:integer); var i:integer;begin if (k=p+1) then solutie else for i:= x[k-1]+1 to n do begin x[k]:=1; back (k+1); end; end;beginwrite('n=');readln (n);write ('p=');readln (p);back(1);readln;end.

Page 3: Grile si probleme

Simulaţi executarea algoritmului pentru n=4 şi p=2.4!/((4-2)!*2!)=6

Page 4: Grile si probleme

2.Generarea aranjamentelorSe citesc două numere naturale n şi p. Să se genereze toate aranjamentele de n elemente luate câte p ale mulţimii {1,2,…,n}.

type=array [1..20] of integer; var x:vector; n,p:integer; var i:integer;begin for i:= 1 to p do write(x[i],' ');function continuare (k:integer):boolean;var i:integer;begin continuare i:=1 to k-1 do if x[i]=x[k] then continuare:=falseend;

Page 5: Grile si probleme

procedure back (k:integer);var i:integer;begin if (x=p+1) then solutie else for i:= 1 to n do begin x[k]:=i; if continuare(k) then back (k+1);end; end;begin write ('n=');readln (n);write('p=');readln(p);back(1);readln;end.

Page 6: Grile si probleme

Simulaţi executarea algoritmului pentru n=4 şi p=2.4!/(4-2)!=12

Page 7: Grile si probleme

3.Generarea permutărilorSe citeşte un număr natural n. Să se genereze permutările de n elemente ale mulţimii {1,2,…,n}.

type vector=array [1..100] of integer; var x:vector;n:integer;procedure solutie;var i:integer;beginwrite (‘(‘);for i:=1 to n-1 do

write (x[i],’,‘);writeln ( x[n],’)‘);nr:= nr+1;

end;function continuare(k:integer):boolean;var i:integer;ok:boolean;nr:integer;beginok:= true;if k=1 then continuare:=true else

for i:=1 to k-1 doif k[x]:=k[i] thenok:=false;

continuare:=ok;end;

Page 8: Grile si probleme

procedure back (k:integer);beginif (k=n+1) then solutie elsefor i:= 1 to n do beginx[k]:=i ;if continuare (k) thenback (k+1);end;end;beginwrite (‘n=‘);readln (n);back(1);write (‘nr=‘,nr);readln;end.

Page 9: Grile si probleme

Simulaţi executarea algoritmului pentru n=3.

3!=6

Page 10: Grile si probleme

4.Săritura caluluiSe consideră o tablă de şah nxn şi un cal plasat în colţul din stânga, sus. Se cere să se afişeze un drum al calului pe table de şah, astfel încât să treacă o singură dată prin fiecare pătrat al tablei.

type vector= array[1..400] of integer ; matrice=array (1..20,1..20] of integer;const dx:array [1..8] of integer =(-2,-1,1,2,2,1,-1,-2); dy:array[1..8] of integer=(-1,-2,-2,-1,1,2,2,1);var A:matrice x,y:vector; n:integer;procedure solutie; vari,j:integer; begin writeln; for 1:=1 to n do begin forj:= 1 to n do write('A[',i,',',j,']='); readln (A[i,j]); writeln; end;end;function continuare (k:integer):boolean; var ok:boolean;begin ok:=true;if (x[k]<1)or (x[k]>n) or (y[k]<1) or (y[k]>n) or (A[ x[k],y[k]]>o) then ok:= false; continuare:= ok;end;

Page 11: Grile si probleme

procedure back (k:integer); var i:integer;begin if (k=n*n+1) then solutie else begin for i:= 1 to 8 do begin x[k]:= x[k-1]+dx[i]; y[k]:=y[k-1]+dy[i]; A[x[k],y[k]]:=k;if continuare (k) then back (k+1); A[x[k],y[k]]:=0; end;end; end;begin write('n=');readln(n); x[1]:=1; y[1]:=1;A[1,1]:=1; back(2);readln; end.

Page 12: Grile si probleme

5.Problema reginelorSă se determine toate posibilităţile de aranjare a n regine pe o tablă de şah de dimensiune nxn astfel încât reginele să nu se atace reciproc. Regina atacă piesele saflate pe aceeaşi linie, coloană sau diagonală

type vector=array [1..30] of integer; var x:vector;n:integer;procedure solutie;var i,j:integer;beginwrite (‘(‘);for i:=1 to n do begin

for j:=1 to n doif x[i]=j then write (‘*’) elsewrite (‘_’);writeln;

end;function continuare(k:integer):boolean;var i:integer;ok:boolean;beginok:= true;for i:=1 to k-1 do

Page 13: Grile si probleme

if ( x[k]=x[i]) or (abs (x[k]-x[i])=(k-i))then ok:=false;

continuare:=ok;end;procedure back (k:integer);var i:integer;beginif (k=n+1) then solutie else begin

for i:= 1 to n do beginx[k]:=i ;if continuare (k) thenback (k+1);

end;end;end;beginwrite (‘n=’);readln (n);back(1);readln;end.

Page 14: Grile si probleme

6.Problema turelorSă se determine toate posibilităţile de aranjare a n ture pe o tablă de şah de dimensiune nxn astfel încât turele să nu se atace reciproc. Tura atacă piesele aflate pe aceeaşi linie sau coloană.

type vector = array [1..100] of integer; var x: vector; n: integer; nr:integer;procedure solutie; var i,j :integer; begin nr:= nr+1; for i:= 1 to n do begin for j:= 1 to n do if x[i]=j then write ('*') else write (' '), writeln;end; readln; end;function continuare (k:integer):boolean; var i:integer; ok:boolean;

Page 15: Grile si probleme

beginok:= true; if k=1 then continuare := true; for i:=1 to k-1 do if x[k]=x[i] then ok:= false; continuare:= ok;end;procedure back (k:integer); var i:integer;begin if (k=n+1) then solutie else for i:= 1 to n dobegin x[k]:=i; if continuare (k) then back (k+1);end;end;beginwrite ('n=',n);back(1);write('nr',nr); readln; end.

Page 16: Grile si probleme

7.Generarea produsului cartezian

Se citesc numerele naturale n şi p. Să se genereze toate elementele produsului cartezian P=AxAx...xA=Ap, unde A={1,2,…,n}.

type vector=array [1..100] of integer;var x:vector;procedure solutie;var x:integer;beginwrite (‘(‘);for i:=1 to n-1 do

write (x[i],’,‘);writeln ( x[n],’)‘);

end;

Page 17: Grile si probleme

procedure back (k:integer);var i:integer;beginif (k=n+1) then solutie else beginfor i:= 1 to n do begin

x[k]:=i ;back (k+1);

end;end;beginwrite (‘n=’);readln (n);back(1);readln;end.

Page 18: Grile si probleme

8.Generarea partiţiilor unui număr naturalSe citeşte numărul natural n. Să se genereze toate modurile de descompunere a lui n ca sumă de numere naturale.

type vector=array [1..20] of integer; var x:vector;n,s:integer;procedure solutie (k:integer);var i:integer;beginfor i:=1 to n do

write (x[i],’ ‘);end;function continuare(k:integer):boolean;begin

continuare:= (x[k]+s)<n;end;

Page 19: Grile si probleme

procedure back (k:integer);beginif (s=n) then solutie (k-1) else

beginx[k]:=0;while continuare (k) do beginx[k]:=x[k]+1;s:=s+x[k]:back(k+1);s:=s-x[k];end;end;

end;beginwrite (‘n=’);readln (n);back(1);readln;end.

Page 20: Grile si probleme

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? (4p.)

a. 9 b. 15 c. 12 d. 20b.15 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? (4p.)a. edcb b. eeee c. edde d. ededd.eded

Page 21: Grile si probleme

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? (4p.)a. edec b. eded c. edde d. edcba edec4. 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? (4p.)a. edde b. eddb c. edeb d. edcbc.edeb

Page 22: Grile si probleme

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 metodă 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. 6d.6  6. Utilizând metoda backtracking sunt generate numerele de 3 cifre, având

toate cifreledistincte ş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ă? (4p.)a. 145 b. 147 c. 230 d. 149a.145

Page 23: Grile si probleme

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? (4p.)

a. 169 b. 149 c. 167 d. 147c.167 8. Utilizând metoda backtracking sunt generate în ordine

crescătoare toate numerele de 3 cifre, astfel încât cifrele sunt în ordine crescătoare, iar cifrele aflate pe poziţii consecutive sunt de paritate diferită. Ştiind că primele trei soluţii generate sunt, în această ordine, 123,125, 127, scrieţi toate numerele generate care au suma cifrelor egală cu 12.

129,147,345

Page 24: Grile si probleme

9. Un elev a scris un program care, folosind metoda backtracking, generează toate numerele de câte 5 cifre, cifrele fiind în ordine strict crescătoare. Scrieţi toate numerele generate de program care au prima cifră 5.

 56789 10.Utilizând metoda backtracking pentru afişarea tuturor

modalităţilor de descompunere a unui număr natural ca o sumă de numere naturale nenule, pentru n=3 se obţin în ordine soluţiile:1+1+1; 1+2; 2+1; 3. Ordinea de scriere a termenilor dintr-o descompunere este semnificativă. Folosind aceeaşi metodă pentru n=10, care este soluţia generată imediat după1+1+3+5? (4p.)

a. 1+1+4+1+1+1+1 b. 1+1+7+1 c. 1+2+7 d. 1+1+4+4a.1+1+4+1+1+1+1

Page 25: Grile si probleme

11. Un algoritm de tip backtracking generează, în ordine lexicografică, toate şirurile de 5 cifre 0 şi 1 cu proprietatea că nu există mai mult de două cifre 0 pe poziţii consecutive. Primele 7 soluţii generate sunt: 00100, 00101, 00110, 00111, 01001, 01010, 01011. Care este a8-a soluţie generată de acest algoritm? (4p.)

a. 01110 b. 01100 c. 01011 d. 01101b.01100 12.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?

2+2+2+3,2+2+5,2+7,3+3+3

Page 26: Grile si probleme

13.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?

18 (ABD,ABE,ABF,ADB,AEB,AFB,BAD,BAE,BAF,BDA,BEA,BFA,DAB,DBA,EAB,EBA,FAB,FBA)

 14. Utilizând metoda backtracking se generează permutările

cuvântului info. Dacă primele trei soluţii generate sunt: fino, fion, fnio care este cea de-a cincea soluţie? (4p.)

a. foin b. fnoi c. foni d. ifond.ifno

Page 27: Grile si probleme

15.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.

77773,77775,77777 16.Un algoritm generează în ordine descrescătoare

toate numerele de 5 cifre, fiecare dintre ele având cifrele în ordine strict crescătoare. Ştiind că primele 5 soluţii generate sunt 56789,46789, 45789, 45689, 45679, precizaţi care sunt ultimele 3 soluţii generate, în ordinea generării.

12435,12346,12347

Page 28: Grile si probleme

17.Un algoritm generează, în ordine lexicografică, toate şirurile alcătuite din câte n cifre binare(0 şi 1). Ştiind că pentru n=5, primele 4 soluţii generate sunt 00000, 00001, 00010, 00011,precizaţi care sunt ultimele 3 soluţii generate, în ordinea obţinerii lor.

11101,11110,11111 18.Un algoritm generează în ordine crescătoare, toate

numerele de n cifre (n<9), cu cifre distincte, care nu au două cifre pare alăturate. Dacă pentru n=5, primele 5 soluţii generate sunt 10325, 10327, 10329, 10345, 10347, precizaţi care sunt următoarele 3 soluţii generate, în ordinea obţinerii lor.

10349,10352,10354 

Page 29: Grile si probleme

19.Un algoritm generează în ordine descrescătoare, toate numerele de n cifre (n<9), cu cifrele în ordine strict crescătoare, care nu au două cifre pare alăturate. Dacă pentru n=5, primele 5 soluţii generate sunt 56789, 45789, 45679, 45678, 36789, precizaţi care sunt următoarele 3 soluţii generate, în ordinea obţinerii lor.

35789,35689,35679, 20.. Algoritmul de generare a tuturor numerelor de 5

cifre nenule, fiecare având cifrele ordonate strict crescător, este echivalent cu algoritmul de generare a: (6p.)

d. combinărilor de 9 elemente luate câte 5


Recommended