When we solve Dynamic Programming problems, we try to find a pattern by matching pattern with a standard DP problem. This is generally recommended to solve new DP problems.
Problems Based on Fibonacci
- Nth Fibonacci Number
- Climbing Stairs
- Lucas Numbers
- Dudeney's Cow
- Tribonacci Numbers
- Climbing Stairs with 3 Steps
- Weighted Climbing Stairs
- Decode Ways
Problems Based on Catalan
LCS Based Problems
- LCS of 2 Strings
- LCS of 3 Strings
- Printing LCS
- Longest Palindromic Subsequence
- Shortest Common Supersequence
- Minimum Insertions and Deletions
- Edit Distance
- Minimum Insertions for Palindrome
- Longest Common Substring
- Longest Palindromic Substring
- Longest Repeated Subsequence
- Count Distinct Subsequences
- Regular Expression Matching
LIS Based Problems
- Length of LIS
- LIS on Circular Array
- Printing LIS
- Count LISs
- Max Sum Subsequence
- Longest Arithmetic Subsequence
- Longest Bitonic Subsequence
- Longest Alternating Subsequence
- Longest Common Increasing Subsequence
- Building Bridges
- Box Stacking
Partition DP Based Problem
- Matrix Chain Multiplication
- Boolean Parenthsization
- Two Subsets with Equal Sum
- Palindromic Partitioning
- Partition Array for Max Sum
- Burst Balloons
- Rod Cutting
Problems Based on Knapsack
- 0/1 Knapsack
- Unbounded Knapsack
- Double Knapsack
- Subset Sum
- Coin Change - Count Ways
- Coin Change - Min Coins