UBB · Informatică
Practică
Exersează cu probleme din toată culegerea
Se consideră algoritmul Algo(a, n, m, k) care utilizează subalgoritmul Check(num). Care dintre următoarele afirmații sunt adevărate?
Se consideră algoritmii Contor(x, n) și Alg(numar), care verifică proprietăți ale subsecvențelor.
Algoritm 1
Algorithm Alg(numar)
If numar < 2 then Return False EndIf
For d ← 2, √numar execute
If numar MOD d = 0 then Return False EndIf
EndFor
Return True
EndAlgorithmAlgoritm 2
Algorithm Contor(x, n)
count ← 0
For i ← 1, n - 1 execute
For j ← i + 1 to n execute
v ← x[i]; asc ← True; ok ← 1
For k ← i, j - 1 execute
If x[k] ≥ x[k + 1] then asc ← False; ok ← 0 EndIf
If ok = 1 then v ← v + x[k + 1] EndIf
EndFor
If asc AND Alg(v) then count ← count + 1 EndIf
EndFor
EndFor
Return count
EndAlgorithmCare dintre următoarele afirmații sunt adevărate?
Fie variabilele a = 12, b = 5, c = 3. Care este valoarea returnată de expresia următoare?
Se consideră algoritmul Verifica(n, a), unde n este un număr natural (1 ≤ n ≤ 10^3) și a este un vector cu n elemente numere întregi (a[1], a[2], ..., a[n]):
Algoritm 1
Algorithm Verifica(n, a)
m ← n DIV 2
For i ← 1, m execute
If n MOD 2 = 0 then
aux ← a[m + i]
a[m + i] ← a[n − i + 1]
a[n − i + 1] ← aux
Else
aux ← a[m + i + 1]
a[m + i + 1] ← a[n − i + 1]
a[n − i + 1] ← aux
EndIf
EndFor
For i ← 1, m execute
If a[i] ≠ a[n − i + 1] then
Return False
EndIf
EndFor
Return True
EndAlgorithmSe cere să se determine pentru ce valori ale vectorului a, apelul Verifica(n, a) returnează True.
Se consideră arborele binar de mai jos, împreună cu algoritmul alăturat acestuia. Rădăcina este a. Copiii lui a: b (stânga), c (dreapta). Copiii lui b: d (stânga), e (dreapta). Copilul drept al lui c este f. Copiii lui d: g (stânga), k (dreapta). Copilul drept al lui e este h. Copiii lui f: i (stânga), j (dreapta). Copilul drept al lui g este l. Copilul drept al lui k este m. Copilul drept al lui i este n. Copilul drept al lui n este o.
Algoritm 1
Algorithm algorithm(node)
If node = null then
Return 0
EndIf
count ← 0
If (node.left ≠ null AND node.right = null) OR
(node.left = null AND node.right ≠ null) then
count ← count + 1
EndIf
Return count + algorithm(node.left) + algorithm(node.right)
EndAlgorithmCare este valoarea returnată de algoritm, considerând că apelul acestuia a avut ca parametru rădăcina arborelui?