Documente Academic
Documente Profesional
Documente Cultură
int x = 1, y, z = 3,
t;
x += y = z += t = 5;
Atunci:
x=9,y=8,z=8,t=5
Daca doua atribute cu acelasi nume sunt mostenite de o interfata Java atunci
se obtine:
mostenire multipla
ambiguitatea atributului
clonarea structurilor de date
Daca x este de tip double (in Java) atunci rezultatul x != x este true daca si
numai daca x este
+0.0
NaN
-0.0
Managerul doreste o incarcare maximala a salii Studio. Presupunem ca ati scris un program C+
+/Java care sa fie util managerului in alegerea numarului maxim de spectacole, iar sala sa fie
utilizata cat mai mult timp. In testarea programului folositi urmatorul set de date
n=8
i = 1, start[1] = 2, final[1] = 5
i = 2, start[2] = 10, final[2] = 15
i = 3, start[3] = 7, final[3] = 9
i = 4, start[4] = 18, final[4] = 19
i = 5, start[5] = 10, final[5] = 12
i = 6, start[6] = 12, final[6] = 16
i = 7, start[7] = 7, final[7] = 8
i = 8, start[8] = 20, final[8] = 23
Care din urmatoarele variante de raspuns este oferit de programul dumneavoastra in ipoteza ca
acesta implementeaza corect metoda de selectie pentru utilizarea la maximum a salii pentru cat
mai multe spectacole.
1, 3, 2, 4, 8
1, 3, 7, 2, 5, 6, 8, 4
1, 7, 3, 5, 2, 6, 4, 8
1, 3, 5, 6, 4, 8
n = 4,
m = 6,
A = {-5, -4, -3, 10}
si
B = {-2, 1, 2, 3, 4, 5}
Faceti parte din echipa care testeaza buna functionare a unui program pentru stabilirea ordinii in
care trebuie incluse melodiile in lista astfel incat timpul mediu pentru a ajunge la melodii sa fie
minim. Programul citeste n - numarul melodiilor, L[i] - lungimea melodiei i ( i = 1, 2, ..., n) si
afiseaza indicii melodiilor in ordinea in care se vor plasa in lista.
10, 6, 8, 6, 5, 4, 9, 8
4, 5, 6, 6, 8, 8, 9, 10
10, 9, 8, 8, 6, 6, 5, 4
8, 9, 4, 5, 6, 8, 6, 10
In intervalul de timp [0, T] o echipa poate executa n lucrari, unde timpul de executare a fiecarei
lucrari este acelasi. La un moment dat echipa intreaga lucreaza la o singura lucrare. Se
presupune ca seful echipei cunoaste atat castigul obtinut C[i], cat si termenul de finalizare F[i],
pentru fiecare lucrare i, i = 1, 2, ..., n. Se cere o selectie optimala a lucrarilor in sensul
maximizarii castigului obtinut. Se presupune ca pentru obtinerea selectiei optimale se va utiliza
un program C++/Java care trebuie testat pentru urmatorul set de date:
n = 10
i = 1, F[1] = 1, C[1] = 10
i = 2, F[2] = 3, C[2] = 9
i = 3, F[3] = 3, C[3] = 10
i = 4, F[4] = 6, C[4] = 8
i = 5, F[5] = 7, C[5] = 8
i = 6, F[6] = 7, C[6] = 9
i = 7, F[7] = 8, C[7] = 5
i = 8, F[8] = 8, C[8] = 7
i = 9, F[9] = 8, C[9] = 10
i = 10, F[10] = 8, C[10] = 12
Indicati multimea de indici care descrie selectia obtinuta folosind strategia optimala (aplicabila
pentru orice set de date) stiind ca echipa isi incheie activitatea la momentul T = 8.
10, 3, 9, 6, 4, 5, 6, 7
3, 4, 10, 9, 8, 7, 6, 5
1, 3, 2, 4, 6, 5, 10, 9
1, 2, 3, 4, 5, 6, 7, 8
Se considera graful din figura
Multimea muchiilor arborelui partial de cost minim obtinute prin metoda Greedy, este:
[u0, u1], [u3, u4], [u1, u3], [u2, u3], [u4, u5]
[u0, u1], [u3, u4], [u1, u2], [u2, u3], [u4, u5]
[u0, u1], [u1, u2], [u2, u3], [u3, u4], [u4, u5]
[u0, u1], [u3, u4], [u1, u3], [u2, u4], [u4, u5]
Se considera un graf neorientat cu 80 de noduri si 3160 muchii. Care este numarul de muchii
care nu vor fi selectate de un program care implementeaza metoda Greedy pentru constructia
arborelui partial de cost minim?
79
3081
80
3080
Se presupune ca un program a preluat la intrare un graf cu n varfuri si m muchii pentru a obtine
un arbore partial de cost minim. Din raportul de testare intocmit asupra programului dispunem
doar de informatia privind numarul de muchii selectate de program. Acesta este 11. Care trebuie
sa fi fost n - numarul de varfuri ale grafului considerat?
n = 11
n = 12
Se considera un graf neorientat G. Pentru a determina varfurile grafului G care fac parte din
componenta conexa a varfului x (x reprezinta un parametru formal al functiei/metodei care
implementeaza algoritmul de rezolvare a problemei) se utilizeaza metoda
Backtracking
Programarii Dinamice
Divide et Impera
Branch and Bound
Greedy
Fie A = {1, 2, ..., n} si B = {1, 2, ..., m}, unde n si m sunt numere naturale nenule, . Se
doreste generarea tuturor functiilor injective . Ce metoda de elaborarea algoritmilor
trebuie folosita?
Metoda Branch and Bound
Metoda Divide et Impera
Metoda Backtracking
Metoda Programarii Dinamice
Metoda Greedy
Folosind modelul combinarilor se genereaza numerele naturale cu cate trei cifre distincte din
multimea {1, 2, 3, 7}, numere cu cifrele in ordine strict crescatoare, obtinandu-se, in ordine:
123, 127, 137, 237. Daca se utilizeaza exact aceeasi tehnica pentru a genera numerele naturale
cu patru cifre distincte din multimea {1, 2, 3, 4, 5, 6, 7, 8}, cate numere generate au prima cifra
2 si ultima cifra 7?
8
3
4
6
Utilizand metoda backtracking sunt generate numerele de 3 cifre avand toate cifrele distincte si
cu proprietatea ca cifrele aflate pe pozitii consecutive sunt de paritate diferita. Stiind ca primele
sase solutii generate sunt, in aceasta ordine, 103, 105, 107, 109, 123, 125, care este a zecea
solutie generata?
145
147
230
149
Utilizand metoda backtracking ati scris un program corect in C++/Java care genereaza toate
numerele de cate n cifre (0<n<10), cifrele fiind in ordine strict crescatoare. Daca n este egal cu
7, cate numere genereaza programul dumneavoastra?
9!
36
7!
7
Folosind strategia backtracking ati elaborat un program C++/Java care genereaza corect, in
ordine crescatoare, toate numerele de n cifre folosind doar cifrele 3, 5 si 7. Daca pentru n = 5,
primele 5 solutii generate trebuie sa fie 33333, 33335, 33337, 33353, 33355, precizati care ar
trebui sa fie ultimele 3 solutii.
77737, 77757, 77777
77337, 77353, 77355
77773, 77775, 77777
77753, 77773, 77777
Algoritmul de generare a tuturor numerelor de 5 cifre nenule, fiecare avand cifrele ordonate
strict crescator, este echivalent cu algoritmul de generare a:
submultimilor unei multimi cu 5 elemente
produsul cartezian a unor multimi de cifre
aranjamentelor de 9 elemente luate cate 5
combinarilor de 9 elemente luate cate 5
Cu ce expresie pot fi inlocuite punctele de suspensie astfel incat, in urma apelului s(2), sa afiseze
3 caractere *?
x>1
x>2
x>=3
x>0
Functia f este astfel definita incat f(1) = 8 si f(n+1)=2*f(n)-4, pentru n numar natural nenul.
Care este cea mai mare valoare pe care o poate lua x astfel incat f(x) < 1000?
7
6
8
9
Care din urmatoarele metode de sortare nu este obtinuta prin metoda Divide et impera?
Sortare prin interclasare
Sortare rapida
Sortare prin numarare
Care este complexitatea algoritmului de cautare binara (aplicat asupra unei colectii ordonate cu
n elemente), din punct de vedere al numarului de comparatii?
n
O( )
n/2
Se considera arborele binar
Se aplica metoda Divide et impera pentru traversarea in preordine a arborelui. Care este secventa
care corespunde traversarii in preordine a subarborelui drept?
+/+EF-GH
/+EF-GH
+*-AB+CD
*-AB+CD
Se considera arborele binar
Folosind strategia Divide et Impera se cauta numarul 13 in acest arbore. Care sunt numerele cu
care se va compara?
10, 11, 12, 14
10, 15, 11, 14, 12
15, 14
1, 3, 8, 10, 11, 12, 14
Se considera arborele binar
Care este ultimul numar din lista care reda parcurgerea in postordine a arborelui?
-8
17
12
Se considera imaginea partitionata recursiv in patru regiuni prin metoda Divide et impera.
Arborele asociat partitionarii este numit arbore Quad. Nodul radacina este constituit din intreaga
imagine. Care este inaltimea arborelui Quad care corespunde partitionarii date mai sus?
3
4
5
6
Rezulta, de aici, ca inmultirea binara poate fi realizata prin strategia Divide et impera.
Complexitatea T(n) a algoritmului de inmultire binara este descrisa prin
T(n) = O( )
T(n) = O( )
T(n) = O(n/2)
Orice algoritm recursiv este o descriere a unui rationament de tip Divide et impera.
Adevarat
Fals
Se considera trei tije notate cu numerele 1, 2 si 3. Se considera n discuri de diametre diferite.
Initial, toate discurile sunt plasate pe tija 1 in ordinea descrescatoare a diametrelor, considerand
sensul de la baza la varf. Se doreste testarea unui program care utilizeaza strategia Divide et
impera pentru a muta discurile de pe tija 1 pe tija 2, folosind ca tija de manevra tija 3 si
respectand urmatoarele reguli:
- la fiecare pas se muta un singur disc;
- un disc poate fi asezat numai peste alt disc cu diametru mai mare sau poate fi primul disc de la
baza tijei.
Presupunem ca ati implementat strategia programarii dinamice pentru a obtine cea mai mare
suma care se poate forma folosind regulile de mai sus.
14
16
17
19
Se considera x - un vector cu n elemente numere întregi. Se scrie un program C++/Java bazat pe
strategia Programarii Dinamice care va determina un cel mai lung sir crescator al sirului x.
In timpul testarii programului se considera:
n=5
x = (4, 5, 7, -1, 7)
Programul trebuie sa afiseze:
4, 5, 7
4, 5, 7, 7
5, 7, 7
Fie G un graf orientat si ponderat avand n varfuri. Fie d[i] lungimea drumului maxim care are ca
extremitate initiala varful i (i = 1, 2, ..., n). Valoarea d(G) = max{d[i]; i = 1, 2, ..., n} reprezinta
diametrul grafului G.
Se doreste utilizarea programarii dinamice pentru elaborarea si testarea unui program C++/Java
care pentru un graf orientat G furnizeaza d(G). Care este algoritmul care, modificat, faciliteaza
obtinerea diametrului grafului G?
Dijkstra
Roy-Floyd
Kruskal
Fie matricele A[50][20], B[20][1], C[1][10] si D[10][100]. Se doreste realizarea inmultirii celor
patru matrici X = ABCD. Inmultirea matricelor este asociativa, iar numarul de inmultiri pentru
realizarea produsului Y=UV (unde U[m][n] si V[n][p]) este mxnxp. Care este ordinea de
inmultire (obtinuta prin metoda programarii dinamice) ce duce la numarul minim de inmultiri cu
care se poate calcula X.
A x ((BxC)xD)
(Ax(BxC))xD
(AxB)x(CxD)
Se defineste o partitie a unui numar natural n ca fiind o scriere a lui n sub forma
, unde , iar sunt numere naturale care verifica relatia
. Ati scris un program C++/Java, care utilizeaza metoda
programarii dinamice, pentru a numara si genera partitiile oricarui numar n introdus de la
tastatura.
Pentru n = 7 se cere sa precizati cate din partitiile generate de programul dumneavoastra sunt
constituite numai din numere impare: este impar pentru oricare i, .
7
6
5
8
Intr-o regiune montana se doreste instalarea unui lant de telecabine. Se considera ca in regiunea
montana considerata sunt N varfuri si ca statiile pentru telecabine pot fi montate in oricare din
cele N varfuri. Presupunem ca varfurile sunt date de la stanga la dreapta (exemplu: de la Vest la
Est) si ca sunt numerotate prin 1, 2, 3,..., N. Astfel, fiecare varf i este precizat prin coordonata
X[i] (pe axa OX) si inaltimea H[i] (pe axa OY). Se doreste infiintarea a exact K statii de
telecabine. Deoarece se doreste ca lantul de telecabine sa asigure conectarea varfurilor 1 si N, cu
exceptia statiei 1 (amplasata obligatoriu in varful 1) care este conectata doar cu statia 2 si a
statiei K (amplasata obligatoriu in varful N) care este conectata doar cu statia K-1, toate celelalte
statii i (1 < i < K) sunt conectate atat cu statia i-1 cat si cu statia i+1, iar lungimea totala a
cablurilor folosite la conectare sa fie minima. Lungimea cablului dintre doua statii este egal cu
distanta dintre ele. In plus, un cablu care uneste doua statii consecutive nu poate avea o lungime
mai mare decat o lungime fixata L. De asemenea, formele de relief influenteaza conectare. Mai
precis: varfurile i si j (i < j) nu pot fi conectate direct daca exista un varf v (i<v<j) astfel incat
segmentul de dreapta care uneste varfurile i si j trece pe sub varful v. Daca i, v si j sunt coliniare
atunci toate trei se considera a fi statii.
Pentru a identifica amplasarea celor K statii astfel incat lungimea totala a cablurilor sa fie
minima si sa fie indeplinite restrictiile de mai sus ati elaborat un program C++/Java care
implementeaza un algoritm obtinut prin tehnica programarii dinamice. Programul afiseaza
lungimea minima LM si lista varfurilor in care se instaleaza statiile.
X[i] H[i]
0 16
4 3
6 8
7 4
12 16
13 16
14 16
se cere sa verificati care dintre urmatoarele raspunsuri ale programului trebuie sa fie cel corect.
LM = 16, Statiile: 1, 5, 6, 7
LM = 22, Statiile: 1, 3, 5, 6, 7
O companie este alcatuita din N soldati. Se considera ca soldatii sunt identificati prin numerele
1, 2, ..., N si se cunosc inaltimile H[i], pentru fiecare soldat avand codul i (i = 1, 2, ..., N).
La prima inspectie soldatii sunt asezati in sir in ordinea crescatoare a codului. Capitanul doreste
ca din sir sa iasa un numar minim de soldati, iar cei care raman, fara sa-si schimbe locurile, sa
poata vedea cel putin o extremitate a sirului (din stanga sau din dreapta). Un soldat vede o
extremitate daca intre el si extremitate nu se afla un soldat cu inaltimea mai mare sau egala cu
inaltimea lui.
Ati scris un program C++/Java care accepta la intrare numarul N si inaltimile H[i], i=1, 2, ...,N si
determina, folosind strategia programarii dinamice, numarul minim de soldati x care trebuie sa
paraseasca sirul pentru a fi indeplinita conditia din enunt.
25
28
24
22