Documente Academic
Documente Profesional
Documente Cultură
S[0] = 0
pentru j = 1 la n:
S[j] = max(0, a j + S[j - 1])
returnare max j S[j ]
0≤i<j
Algoritm:
pentru j = 1 la n:
T(j)=(200-aj) 2
pentru i = 1 la j - 1:
T(j)=min{T(j),T(i)+(200-(aj-a i)) }
2
returnează T(n)
(1 Dacă i = j
T(i,j) = 2 + T(i + 1,j - 1) Dacă i < j și x[i] = x[j]
[ max{T (i + 1,j), T (i,j — 1) } altfel
1
pentru i = 2 până la n + 1:
T[i, i - 1] = 0 pentru i = 1 la n:
T[i,i]=1
pentru d = 1 la n - 1: (lungimea intervalului)
pentru i = 1 la n - d:
j=i+d
dacă x[i] = x[j]:
T[i,j]=2+T[i+1,j-1]
altfel:
T[i,j] =max{T[i+1,j],T[i,j-1]} returnează T[1, n]
Durata spectacolului: Există subprobleme O(n 2) și fiecare are nevoie de O(1) timp pentru calcul, deci timpul total de rulare
este O( ).
n2
T (u) este adevărat dacă și numai dacă T (u - x i) este adevărat pentru unii . i
T [0] = adevărat
pentru u = 1 la v:
T [u] = fals
pentru i = 1 la n:
dacă ≥ x i și T [u - x ]: T [u] = adevărat
i
Durata spectacolului: Tabelul are dimensiunea v și fiecare intrare necesită O(n) timp pentru a fi completată; prin urmare,
timpul total de funcționare este O(nv).
Vrem T (r).
2
Formulare recursivă: În determinarea lui T (u), întrebarea cea mai imediată este dacă u se află în capacul vârfului. Dacă nu,
atunci copiii săi trebuie să fie în capacul vârfului. Lăsați C(u) să fie setul copiilor voștri și lăsați-l pe G(u) să fie nepoții săi.
Apoi
T(u) = min
।)
T(u)=min
|C(u)|+P z∈G(u)T(z)
unde |C (u)| este numărul de copii ai nodului u. Primul caz include u în capacul vârfului; Al doilea caz nu face acest lucru.
Algoritm:
Durata spectacolului: Munca depusă la fiecare nod este proporțională cu numărul său de nepoți, |G(u)|. Pentru că u |G(u)| ≤ |
V | (fiecare nod are cel mult un bunic), munca generală efectuată este liniară.
T(u, j) este adevărat dacă și numai dacă (fie u = 0, fie (T(u - x i,j - 1) este adevărat pentru unii i)).
Pentru consecvență, setați T (0, j) la true pentru toate j și T (u, 0) la false pentru dvs. > 0.
Algoritm:
pentru j = 0 la k:
T [0, j] = adevărat
pentru u = 1 la v:
T [u, 0] = fals
pentru j = 1 la k:
pentru u = 1 la v:
T [u, j] = fals
pentru i = 1 la n:
dacă ≥ x i și T [u - xi, j - 1]: T [u, j] = adevărat
returnează T [v, k]
Durata spectacolului: Tabelul are dimensiunea k × v și fiecare intrare necesită O(n) timp pentru a fi completată; prin urmare,
timpul total de funcționare este O (nkv).