البرمجة الديناميكية (DP) تحل المشاكل التي تحتوي على overlapping subproblems وoptimal substructure عن طريق حساب كل مشكلة فرعية مرة واحدة وإعادة استخدام النتيجة. الأسلوبان هما memoization (من الأعلى إلى الأسفل) وtabulation (من الأسفل إلى الأعلى).
الفكرة
العودية الساذجة تعيد حساب نفس المشاكل الفرعية بشكل أسي. DP تخزن النتائج مؤقتاً، مما يقلل العمل الأسي إلى عمل متعدد الحدود.
