290 likes | 436 Views
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;
E N D
Grilesiprobleme CremineDenisa
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; begin write('n=');readln (n); write ('p=');readln (p); back(1); readln; end.
Simulaţiexecutareaalgoritmuluipentrun=4şi p=2. 4!/((4-2)!*2!)=6
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:=false end;
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.
Simulaţiexecutareaalgoritmuluipentrun=4şip=2. 4!/(4-2)!=12
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; begin write (‘(‘); 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; begin ok:= true; if k=1 then continuare:=true else for i:=1 to k-1 do if k[x]:=k[i] then ok:=false; continuare:=ok; end;
procedure back (k:integer); begin if (k=n+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); back(1); write (‘nr=‘,nr); readln; end.
4.Săritura caluluiSe consideră o tablă de şahnxnşi un cal plasatîncolţul din stânga, sus. Se ceresă se afişeze un drum al caluluipe table de şah, astfelîncâtsătreacă o singurădatăprinfiecarepă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;
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.
5.Problema reginelorSă se determine toate posibilităţile de aranjare a n regine pe o tablă de şah de dimensiune nxn astfel încâtreginele 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; vari,j:integer; begin write (‘(‘); for i:=1 to n do begin for j:=1 to n do if x[i]=j then write (‘*’) else write (‘_’);writeln; end; function continuare(k:integer):boolean; var i:integer;ok:boolean; begin ok:= true; for i:=1 to k-1 do
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; begin if (k=n+1) then solutie else begin for i:= 1 to n do begin x[k]:=i ; if continuare (k) then back (k+1); end; end; end; begin write (‘n=’);readln (n); back(1); readln; end.
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;
begin ok:= 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 do begin x[k]:=i; if continuare (k) then back (k+1); end;end; begin write ('n=',n); back(1); write('nr',nr); readln; end.
7.Generarea produsului cartezianSe citesc numerele naturale n şi p. Să se genereze toate elementele produsului cartezianP=AxAx...xA=Ap, unde A={1,2,…,n}. type vector=array [1..100] of integer; var x:vector; procedure solutie; var x:integer; begin write (‘(‘); for i:=1 to n-1 do write (x[i],’,‘); writeln ( x[n],’)‘); end;
procedure back (k:integer); var i:integer; begin if (k=n+1) then solutie else begin for i:= 1 to n do begin x[k]:=i ; back (k+1); end; end; begin write (‘n=’);readln (n); back(1); readln; end.
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; begin for i:=1 to n do write (x[i],’ ‘); 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 begin x[k]:=x[k]+1; s:=s+x[k]: back(k+1); s:=s-x[k]; end; end; end; begin write (‘n=’);readln (n); back(1); readln; end.
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. 20 b.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. eded d.eded
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. edcb a edec 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? (4p.) a. edde b. eddb c. edeb d. edcb c.edeb
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. 6 d.6 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ă? (4p.) a. 145 b. 147 c. 230 d. 149 a.145
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. 147 c.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
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+4 a.1+1+4+1+1+1+1
11. Un algoritm de tip backtracking generează, înordinelexicografică, toateşirurile de 5 cifre0 şi1 cu proprietateacă nu existămaimult de douăcifre0 pepoziţii consecutive. Primele7 soluţii generate sunt: 00100, 00101, 00110, 00111, 01001, 01010, 01011. Care este a8-a soluţiegenerată de acestalgoritm? (4p.) a. 01110 b. 01100 c. 01011 d. 01101 b.01100 12.Pentru a scrievaloarea10 ca sumă de numere prime se foloseştemetoda backtracking şi se generează, înaceastăordine, sumeledistincte: 2+2+2+2+2, 2+2+3+3, 2+3+5, 3+7,5+5. Folosind exact aceeaşimetodă, se scrievaloarea9 ca sumă de numere prime. Care suntprimeletreisoluţii, înordineagenerăriilor? 2+2+2+3,2+2+5,2+7,3+3+3
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. ifon d.ifno
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
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
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