La programmazione dinamica (DP) risolve problemi con sottoproblemi sovrapposti e sottostruttura ottimale calcolando ogni sottoproblema una volta e riutilizzando il risultato. I due stili sono memoization (top-down) e tabulation (bottom-up).
L'idea
La ricorsione ingenua ricalcola gli stessi sottoproblemi in modo esponenziale. DP li memorizza, collassando il lavoro esponenziale in polinomiale.
