Sunteți pe pagina 1din 8

Nume:

Grupa:

Exemple de subiecte

1. Având doi algoritmi ce se execută în timpul 𝑓(𝑡) = 5𝑡 !"" − 25𝑡 ##$ și 𝑔(𝑡) = 2% + 2𝑡,
puteți confirma că următoarea afirmație este adevărată f(t) = O(g(t))? Argumentați.
2. Având următorul șir de numere 23, 12, 94, 1, 89, 21, 14, 84, 33, 7, 9, 83, 102, 55, 91,
81, 17
i. construiți arborele binar de căutare citind șirul de stânga la dreapta.
ii. traversați arborele în postordine
iii. adăugați nodurile 22 și 85;
iv. desenați cei doi arbori ce rezultă prin ștergerea nodului 23.
4. Folosind metoda programării dinamice, completați tabelele de mai jos, urmând mai
apoi să selectați obiectele potrivite pentru a maximiza profitul rucsacului, în cazul în
care avem următoarele obiecte: greutate: 4, 4, 1, 3, 7, 3 și valoare 3, 7, 13, 5, 11, 10.
Greutate totală 13.










5. Dat fiind un arbore binar, descrieti un algoritm care determina daca doua
noduri au grad de rudenie de văr. (4,6), (4,7), (5,6), (5,7) sunt veri.


6. Aranjați liniile de cod următoare în ordinea corectă și mai apoi precizați ce o
să afișeze programul.
for (c = 0; c <= (n - i - 2); c++)
printf(" ");
for (c = 0 ; c <= i; c++)
printf("%ld ",factorial(i)/(factorial(c)*factorial(i-c)));
long factorial(int n)
printf("\n");
#include <stdio.h>
int i, n, c;
result = result*c;
return 0;
{
}
}
{
for (c = 1; c <= n; c++)
return result;
int main() {
for (i = 0; i < n; i++)
int c;
Nume:
Grupa:
long factorial(int);
scanf("%d",&n);
long result = 1;
}

7. Care este diferenta dintre un tip de data simplu si un tip de data tip structura.


Examen Structuri de date și tehnici de elaborare a algoritmilor

1. Având doi algoritmi ce se execută în timpul 𝑓(𝑡) = 2𝑡 $ + 3𝑡 + 15 și 𝑔(𝑡) = (3 + 𝑡)$ ,
puteți confirma că următoarea afirmație este adevărată f(t) = 𝜃(g(t))? Argumentați.
2. Coloană din stânga conține inputul de stringuri care trebuie sortate; ultima coloană
conține stringurile sortate; celelalte coloane reprezintă un pas intermediar al unuia
dintre algoritmii listați mai jos. Potriviți algoritmul cu coloana corespunzătoare scriind
numărul algoritmului în dreptul coloanei corecte. Fiecărui algoritm îi este atribuită o
singură coloană. Argumentați.
Nume:
Grupa:


(0) – Input(1)– Output sortat (2)– Selection Sort (3)- Insertion Sort (4)- Mergesort
(5)– Quicksort (6)– BubbleSort (7)- ShellSort

3. Având următorul șir de numere 43,23, 15, 56, 7, 11, 34, 26, 72, 10, 1,2, 3, 110, 78, 54,
34, 17, 90:
i. construiți arborele binar de căutare citind șirul de stânga la dreapta.
ii. traversați arborele în postordine
iii. adăugați nodurile 12 și 67;
iv. desenați cei doi arbori ce rezultă prin ștergerea nodului 7.
4. Folosind metoda programării dinamice, completați tabelele de mai jos, urmând mai
apoi să selectați obiectele potrivite pentru a maximiza profitul rucsacului, în cazul în
care avem următoarele obiecte: greutate: 2, 1, 11,5,2,4 și valoare 12, 9, 3, 4, 13, 2.
Greutate totală 13.

















Nume:
Grupa:

5. Schitati un algoritm pentru gasirea numarul minim de linii necesare intr-o
statie, astfel incat sa fie evitata intarzierea oricarui tren.

6. Aranjați liniile de cod următoare în ordinea corectă și mai apoi precizați ce o
să afișeze programul.
scanf("%d",&n);
first = 0;
printf("Enter %d integers\n", n);
break;
printf("%d found at location %d.\n", search, middle+1);
while (first <= last)
printf("Enter number of elements\n");
int c, first, last, middle, n, search, array[100];
i for (c = 0; c < n; c++)
int main()
if (array[middle] < search)
middle = (first + last)/2;
printf("Not found! %d is not present in the list.\n", search);
return 0;
}
else if (array[middle] == search)
scanf("%d", &search);
{
if (first > last)
}
last = n - 1;
printf("Enter value to find\n");
first = middle + 1;
{
middle = (first+last)/2;
else
scanf("%d",&array[c]);
{
last = middle - 1;
}

7. Care sunt factorii determinanti in alegerea unei structuri de date intr-un
program?

Examen Structuri de date și tehnici de elaborare a algoritmilor

1. Având doi algoritmi ce se execută în timpul 𝑓(𝑡) = 3𝑡 $ + 15𝑡 și 𝑔(𝑡) = 1 + 2 +
3+. . . + 𝑡, puteți confirma că următoarea afirmație este adevărată f(t) = o(g(t))?
Argumentați.
2. Coloană din stânga conține inputul de stringuri care trebuie sortate; ultima coloană
conține stringurile sortate; celelalte coloane reprezintă un pas intermediar al unuia
dintre algoritmii listați mai jos. Potriviți algoritmul cu coloana corespunzătoare scriind
numărul algoritmului în dreptul coloanei corecte. Fiecărui algoritm îi este atribuită o
singură coloană. Argumentați.
Nume:
Grupa:


(1) – Input(1)– Output sortat (2)– Selection Sort (3)- Insertion Sort (4)- Mergesort
(5)– Quicksort (6)– BubbleSort (7)- ShellSort

3. Având următorul șir de numere 36, 11, 90, 72, 23, 1, 55, 103, 3, 14, 75, 54, 89, 21, 9,
34, 65
i. construiți arborele binar de căutare citind șirul de stânga la dreapta.
ii. traversați arborele în preordine
iii. adăugați nodurile 43 și 2;
iv. desenați cei doi arbori ce rezultă prin ștergerea nodului 36.
4. Folosind metoda programării dinamice, completați tabelele de mai jos, urmând mai
apoi să selectați obiectele potrivite pentru a maximiza profitul rucsacului, în cazul în
care avem următoarele obiecte: greutate: 2, 13, 6, 1, 4, 1 și valoare 5, 8, 6, 1, 12, 12
Greutate totală 14.










Nume:
Grupa:









5. Aranjați liniile de cod următoare în ordinea corectă și mai apoi precizați ce o
să afișeze programul.
scanf("%d", &array[c]);
return 0;
array[c+1] = array[c];
scanf("%d", &position);
printf("Enter %d elements\n", n);
int array[100], position, c, n, value;
int main()
for (c = 0; c < n; c++)
array[position-1] = value;
printf("Resultant array is\n");
printf("%d\n", array[c]);
# scanf("%d", &value);
for (c = n - 1; c >= position - 1; c--)
scanf("%d", &n);
{
printf("Enter number of elements in array\n");
for (c = 0; c <= n; c++)
}

6. Avand un array de integers, int[A] = {10,3,6,8,9,4,3}, sa se gaseasca cea mai
mare diferenta dintre A[Q] si A[P] astfel incat Q>P. (daca P = 1 si Q = 4, dif =
A[Q]-A[P]=9-3=6). Realizati un program care rezolva aceasta problema.

7. Cate stive sunt necesare pentru implementarea unei cozi? (explicati).







Examen Structuri de date și tehnici de elaborare a algoritmilor

!
1. Având doi algoritmi ce se execută în timpul 𝑓(𝑡) = √𝑡 & + 1 și 𝑔(𝑡) = 1 + 2 +
3+. . . + 2𝑡, puteți confirma că următoarea afirmație este adevărată f(t) = o(g(t))?
Argumentați.
2. Coloană din stânga conține inputul de stringuri care trebuie sortate; ultima coloană
conține stringurile sortate; celelalte coloane reprezintă un pas intermediar al unuia
dintre algoritmii listați mai jos. Potriviți algoritmul cu coloana corespunzătoare scriind
numărul algoritmului în dreptul coloanei corecte. Fiecărui algoritm îi este atribuită o
singură coloană. Argumentați.
Nume:
Grupa:


(2) – Input(1)– Output sortat (2)– Selection Sort (3)- Insertion Sort (4)- Mergesort
(5)– Quicksort (6)– BubbleSort (7)- ShellSort

3. Având următorul șir de numere 32, 16, 12, 78, 90, 54, 45, 23, 10, 8, 67, 9, 2, 1, 102, 56,
34, 89, 7
i. construiți arborele binar de căutare citind șirul de stânga la dreapta.
ii. traversați arborele în preordine
iii. adăugați nodurile 66 și 3;
iv. desenați cei doi arbori ce rezultă prin ștergerea nodului 32.
4. Folosind metoda programării dinamice, completați tabelele de mai jos, urmând mai
apoi să selectați obiectele potrivite pentru a maximiza profitul rucsacului, în cazul în
care avem următoarele obiecte: greutate: 13, 3, 1, 3, 3, 4 și valoare 1, 6, 10, 13, 12, 4
Greutate totală 14.









Nume:
Grupa:









5. Cum verificam daca un arbore binar este arbire binar de cautare?

6. Avand un array dat, rearanjati elementele sale astfel incat fiecare al doilea
element sa fie mai mare decat elementele din stanga si dreapta sa. Se presupune
ca nu exista duplicate. Descrieti algoritmul.

7. Aranjați liniile de cod următoare în ordinea corectă și mai apoi precizați ce o
să afișeze programul.
reverse = reverse + n%10;
n= n/10;
return 0;
}
scanf("%d", &n);
while (n != 0)
int main()
{
printf(reverse);
#include <stdio.h>
int n, reverse = 0;
{
reverse = reverse * 10;
}

S-ar putea să vă placă și