A
UBB · Informatică
232 Raspunsuri multiple

Se consideră algoritmul F(arr, used, perm, n, idx), unde arr este un vector cu n elemente, used este un vector utilizat pentru marcarea elementelor folosite, iar perm este un vector pentru permutarea curentă. Funcția Ok verifică dacă suma elementelor de pe pozițiile pare dintr-o permutare este mai mare decât suma celor de pe pozițiile impare.

Algoritm 1

Algorithm F(arr, used, perm, n, idx)
  If idx > n then
    If Ok(perm, n) then
      For i ← 1, n execute
        Write perm[i], " "
      EndFor
      Write newline
    EndIf
    Return
  EndIf
  For i ← 1, n execute
    If not used[i] then
      used[i] ← 1
      perm[idx] ← arr[i]
      F(arr, used, perm, n, idx + 1)
      used[i] ← 0
    EndIf
  EndFor
EndAlgorithm

Algoritm 2

Algorithm Ok(perm, n)
  evenSum ← 0, oddSum ← 0
  For i ← 1, n execute
    If i MOD 2 = 1 then
      oddSum ← oddSum + perm[i]
    Else
      evenSum ← evenSum + perm[i]
    EndIf
  EndFor
  Return evenSum > oddSum
EndAlgorithm

Care dintre următoarele afirmații sunt adevărate pentru algoritmul prezentat?

15 / 22