Dynamic programming (DP) overlapping subproblems اور optimal substructure والے مسائل کو حل کرتا ہے جو ہر subproblem کو ایک بار compute کرتے ہوئے نتیجہ کو دوبارہ استعمال کرتا ہے۔ دونوں طریقے memoization (top-down) اور tabulation (bottom-up) ہیں۔
خیال
Naive recursion ایک جیسے subproblems کو exponentially دوبارہ compute کرتا ہے۔ DP انہیں cache کرتا ہے، exponential کام کو polynomial میں تبدیل کرتے ہوئے۔
