Dynamic Programming is a problem solving technique that solves a problem by dividing it into its subproblems. When the subproblems are similar that is they share the same property as the original problem and also they are dependent. It is normally used for optimizing a specific problem and follows the principle of optimality which states that for an optimal sequence of decisions, each sub-sequence must also be optimal.
List of possible parent DP problems with the possible least number of their variations(mentioned in square brackets). (source: google)
- 0-1 Knapsack[6]
- Unbounded Knapsack[5]
- Fibonacci[7]
- Longest Common Subsequence[15]
- Longest Increasing Subsequenc[10]
- Kadane's Algorith[6]
- Matrix Chain Multiplication[7]
- DP on Trees[7]
- DP on Grid[14]
- Others(less common)[5]
Anyways, I will be studying and blogging about each of these porblems and their varations..
Happy Coding!
No comments:
Post a Comment