Dynamic programming is the most influential paradigm in algorithm. It solves multiple key problems of computing.
Why is dynamic programming?
- To reduce the function call (improves the time, and space complexity).
- Breaks the whole problem into sub-problems (:only if the sub problems are similar to the whole problem, i.e. problems like Fibonacci series where each function call does the same thing).
- Re-using the subproblems.
- Anything else!?
Key Points for Dynamic Programming:
- Memoization (using the sub-solutions)
Further reading : dynamic programming