Dynamisk programmering (DP) löser problem med överlappande delproblem och optimal substruktur genom att beräkna varje delproblem en gång och återanvända resultatet. De två stilarna är memoization (top-down) och tabulering (bottom-up).
Idén
Naiv rekursion beräknar samma delproblem exponentiellt. DP cachar dem, vilket kollapserar exponentiellt arbete till polynomialt.
