Anusha Murali

Logo

Please see github.com/anusha-murali for all of my repositories.

View GitHub Profile

favorite_dp

Introduction

Dynamic programming (DP) is a method for solving complex problems by breaking them down into simpler subproblems. It is applicable when the problem has overlapping subproblems and optimal substructure. Following are some common techniques used in dynamic programming:

1. Memoization (Top-Down Approach)

2. Tabulation (Bottom-Up Approach)

3. State Transition

4. Space Optimization

5. DP with Bitmasking

6. DP on Trees

7. DP on Graphs

8. DP with Probability

9. DP with Multiple Parameters

10. DP with Divide and Conquer Optimization

11. DP with Convex Hull Trick

12. DP with Sliding Window

13. DP with Matrix Exponentiation

14. DP with Segment Trees or Fenwick Trees

15. DP with Backtracking

These techniques can be combined or adapted depending on the specific problem at hand. The key to mastering dynamic programming is to recognize the patterns and apply the appropriate technique to optimize the solution.

  1. Rod Cutting
  2. Fibonacci Sequence
  3. Catalan Numbers
  4. Maximum Sum Subarray
  5. Longest Increasing Subsequence (LIS)
  6. Longest Common Subsequence (LCS)
  7. Domino and Tromino Tiling
  8. Minimum Cost of Climbing Stairs
  9. Professional Robber
  10. Maximum Repeating Substring
  11. Maximum and Minimum Values of Partitioning Array

anusha-murali.github.io