Dynamic Programming is an algorithmic paradigm that solves a given complex problem by breaking it into subproblems and stores the results of subproblems to avoid computing the same results again. **Following are the most important Dynamic Programming problems asked in various Technical Interviews.**

- Longest Common Subsequence
- Longest Increasing Subsequence
- Edit Distance
- Minimum Partition
- Ways to Cover a Distance
- Longest Path In Matrix
- Subset Sum Problem
- Optimal Strategy for a Game
- 0-1 Knapsack Problem
- Boolean Parenthesization Problem
- Shortest Common Supersequence
- Matrix Chain Multiplication
- Partition problem
- Rod Cutting
- Coin change problem
- Word Break Problem
- Maximal Product when Cutting Rope
- Dice Throw Problem
- Box Stacking
- Egg Dropping Puzzle