डायनामिक प्रोग्रामिंग (DP) ओवरलैपिंग सबप्रॉब्लेम्स और इष्टतम सबस्ट्रक्चर वाली समस्याओं को हल करता है प्रत्येक सबप्रॉब्लम को एक बार कंप्यूट करके और परिणाम का पुन: उपयोग करके। दो शैलियाँ मेमोइजेशन (top-down) और टेबुलेशन (bottom-up) हैं।
विचार
Naive recursion समान सबप्रॉब्लम्स को घातीय रूप से दोबारा कंप्यूट करता है। DP उन्हें कैश करता है, घातीय कार्य को बहुपद में बदल देता है।
