A Dynamic programming a method for solving a complex problem by breaking it down into a collection of simpler subproblems, solving each of those subproblems just once, and storing their solutions. The next time the same subproblem occurs, instead of recomputing its solution, one simply looks up the previously computed solution, thereby saving computation time. This technique of storing solutions to subproblems instead of recomputing them is called memoization.
Following are the top 10 problems that can easily be solved using Dynamic programming:
- Longest Common Subsequence Problem
- Shortest Common Supersequence Problem
- Longest Increasing Subsequence Problem
- The Levenshtein distance (Edit distance) Problem
- Matrix Chain Multiplication Problem
- 0–1 Knapsack Problem
- Partition Problem
- Rod Cutting Problem
- Coin change-making problem
- Word Break Problem