S[0] = 0
untuk j = 1 sampai n:
S[j] = maks(0, aj + S [j - 1])
kembalikan maks j S[j]
0≤i<j
Algoritma:
untuk j = 1 sampai n:
T(j)=(200-a j ) 2
untuk i = 1 hingga j - 1:
T(j)=min{T(j),T(i)+(200-(a j -a i )) }2
kembalikan T(n)
(1 jika i = j
T ( i,j ) = 2 + T ( saya + 1 ,j - 1) jika i < j dan x [ saya ] = x [ j ]
[ maks{T (i + 1,j),T (i,j — 1)} sebaliknya
1
untuk i = 2 hingga n + 1:
T[i, i - 1] = 0 untuk i = 1 hingga n:
T[i,i]=1
untuk d = 1 sampai n - 1: (panjang interval)
untuk i = 1 sampai n - d:
j=i+d
jika x[i] = x[j]:
T[i,j]=2+T[i+1,j-1]
kalau tidak:
T[i,j] =max{T[i+1,j],T[i,j-1]} kembalikan T[1, n]
Waktu berjalan: Ada O(n ) submasalah dan masing-masing membutuhkan O(1) waktu untuk menghitung, sehingga total
2
T [0] = benar
untuk u = 1 sampai v:
T [u] = salah
untuk i = 1 sampai n:
jika u ≥ x dan T [u - x ]: T [u] = true
i i
Waktu berjalan: Tabel memiliki ukuran v dan setiap entri memerlukan waktu O(n) untuk diisi; oleh karena itu total waktu
berjalan adalah O(nv).
T(u) = ukuran penutup simpul terkecil dari subpohon yang berakar pada u.
2
Rumusan rekursif: Dalam mencari tahu T (u), pertanyaan yang paling mendesak adalah apakah u ada di penutup simpul.
Jika tidak, maka anak-anaknya harus berada di penutup simpul. Misalkan C(u) adalah himpunan anak-anak u, dan misalkan
G(u) adalah cucunya. Kemudian
T(u) = min
।)
T ( u )=min
|C(u)|+ P z∈G(u) T(z)
dimana |C (u)| adalah jumlah anak dari simpul u. Kasus pertama menyertakan u di penutup simpul; kasus kedua tidak.
Algoritma:
Waktu berjalan: Pekerjaan yang dilakukan pada setiap node sebanding dengan jumlah cucunya, |G(u)|. Sejak u |G(u)| ≤ |
V | (setiap node memiliki paling banyak satu kakek), keseluruhan pekerjaan yang dilakukan adalah linier.
T(u, j) benar jika dan hanya jika (baik u = 0 atau (T(u - x i ,j - 1) benar untuk beberapa i)).
Untuk konsistensi, atur T (0, j) ke true untuk semua j dan T (u, 0) ke false untuk u > 0.
Algoritma:
untuk j = 0 ke k:
T [0, j] = benar
untuk u = 1 sampai v:
T [u, 0] = salah
untuk j = 1 ke k:
untuk u = 1 sampai v:
T [u, j] = salah
untuk i = 1 sampai n:
jika u ≥ x i dan T [u - x i , j - 1]: T [u, j] = true
kembalikan T [v, k]
Waktu berjalan: Tabel memiliki ukuran k × v dan setiap entri memerlukan waktu O(n) untuk diisi; oleh karena itu total waktu
berjalan adalah O (nkv).