Documente Academic
Documente Profesional
Documente Cultură
Fișa nr. 3
1. Numărul de parcurgeri și numărul de interschimbări de elemente în urma execuției
algoritmului Bubble Sort pentru ordonarea descrescătoare a vectorului, v=(7, 6, 3, 18, 23,
2), este:
a) 10 7 b) 5 6 c) 5 7 d) 8 6
2. Fie G un graf neorientat format din 5 componente conexe cu 2, 3, 4, 5 și, respectiv, 6
noduri. Dacă cele 5 componente conexe reprezintă subgrafuri complete, care este
diferența dintre numărul maxim de muchii care pot fi adăugate în graf astfel încât
numărul de component conexe să fie 1 și numărul minim de muchii care pot fi adăugate
în graf astfel încât numărul de componente conexe să fie 1?
a) 190 b) 151 c) 116 d) 194
3. Se consideră o matrice M cu 7 linii care conține doar elemente de 0 și X. Matricea se
completează astfel: prima linie conține un singur element X; linia i conține de două ori
mai multe elemente X decât linia i-1, pentru i ∈ {2, 3, 4, 5, 6, 7}; ultima linie contine un
singur element 0. Câte elemente de 0 sunt în matrice?
a) 328 b) 117 c) 455 d) 256
4. Care este complexitatea de timp a următoarei secvențe de program?
int i, j, k ;
for(i = 0; i < n; i++)
{
k = n;
for(j = 0; j < k; j++)
k=k/2;
}
a) O(n * log n) b) O(log n) c) O(n) d) O(n2)
5. Pentru secvența de instrucțiuni de mai jos, ce valoare va fi afișată pe ecran?
int i, s;
for(i=1, s=0; i<3 && i%2!=0; s+=i, i++);
cout<<s;
a)0 b) 1 c) 4 d) 014
6. Se generează prin metoda backtracking, submulțimi nevide ale mulțimii {1,2,3}- astfel:
{1},{1,2}, {1,2,3}, {1,3}, {2}, {2,3}, {3}. Folosim aceeași metodă pentru a genera
submulțimile nevide ale mulțimii {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}. Numărul de
submulțimi generate care conțin elementul 6 pe prima poziție este:
a)127 b)32 c)128 d)64
7. Se consideră un graf neorientat cu 7 vârfuri astfel încât între oricare două vârfuri distincte
există muchie. Câte lanţuri elementare distincte, care au lungimea 3, extremitatea iniţială
vârful 1 şi extremitatea finală vârful 7, există? Două lanțuri elementare sunt distincte dacă
diferă prin cel puțin o muchie.
a) 10 b) 42 c) 21 d) 20
8. Precizați ce se afișează la execuția programului definit mai jos:
#include <iostream>
using namespace std;
int sub (int a, int e)
{
int v[10000], n = 0, k = 1, i;
while (e)
{
v[n++] = e % 2;
e = e/2;
}
for (i = 0; i < n; i++)
{
if (v[i] == 1)
k = a * k;
a=a*a;
}
return k;
}
int main ()
{
int rez;
rez = sub (2, 12);
cout<<rez<<' ';
}
a)256 b)12 c)4096 d)24
9. Înlocuiți instrucțiunile A și B astfel încât funcția recursivă de mai jos să calculeze suma
tuturor cifrelor unui număr.
int sumaCifre(int n)
{
if (A)
return n;
else
return B;
}
a) A: n < 10 și B: n%10 + sumaCifre(n/10)
b) A: n == 0 și B: n/10 + sumaCifre(n%10)
c) A: n <= 9 și B: n/10 + sumaCifre(n%10)
d) A: n < 10 și B: sumaCifre(n%10)
a b c d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20