Dynamisch programmeren (DP) lost problemen op met overlappende deelproblemen en optimale substructuur door elk deelprobleem eenmaal te berekenen en het resultaat hergebruikt. De twee stijlen zijn memoization (top-down) en tabulation (bottom-up).
Het idee
Naïeve recursie berekent dezelfde deelproblemen exponentieel opnieuw. DP cacht ze en verkleint exponentieel werk tot polynomiaal.
