La programmation dynamique (DP) résout les problèmes avec des sous-problèmes qui se chevauchent et une structure optimale en calculant chaque sous-problème une seule fois et en réutilisant le résultat. Les deux styles sont la mémoïsation (top-down) et la tabulation (bottom-up).
