Dynamische Programmierung (DP) löst Probleme mit overlapping subproblems und optimal substructure, indem jedes Teilproblem einmal berechnet und das Ergebnis wiederverwendet wird. Die zwei Stile sind memoization (top-down) und tabulation (bottom-up).
Die Idee
Naive Rekursion berechnet dieselben Teilprobleme exponentiell neu. DP speichert sie zwischen, wodurch exponentielle Arbeit zu polynomieller zusammenfällt.
