Dinamičko programiranje (DP) rješava probleme s preklapajućim potproblemima i optimalnom substrukturom tako što jednom izračuna svaki potproblem i ponovno koristi rezultat. Dva su stila memoizacija (top-down) i tabeliranje (bottom-up).
Ideja
Naivna rekurzija ponovno izračunava iste potproblem eksponencijalno. DP ih cachira, pretvarajući eksponencijalni rad u polinomni.
