Δυναμικός προγραμματισμός (DP) λύνει προβλήματα με overlapping subproblems και optimal substructure υπολογίζοντας κάθε υποπρόβλημα μία φορά και επαναχρησιμοποιώντας το αποτέλεσμα. Οι δύο στυλ είναι memoization (top-down) και tabulation (bottom-up).
Η ιδέα
Η αφελής αναδρομή υπολογίζει εκ νέου τα ίδια υποπροβλήματα εκθετικά. Το DP τα αποθηκεύει σε cache, συμπτύσσοντας εκθετική εργασία σε πολυώνυμη.
