Dynamic Programming is a difficult topic. This repository will document my understanding of this topic. Hopefully it will be of some use to you.
An overview of Dynamic Programming
"Dynamic programming is a technique for solving problems with overlapping subproblems."3
"The normal form of dynamic programming problem is to calculate the maximum or minimum"1
"The core of the problem is enumeration. Because we are asked to calculate the max or min, we must enumerate all the feasible answers and find max or min among those."1
- Find a recurrence relation
- Create a recursive solution
- Save underlying subproblems
- Turn recursion into iterative loop
- https://labuladong.gitbook.io/algo-en/i.-dynamic-programming/analysisofdynamicprogramming
- https://leetcode.com/problems/house-robber/discuss/156523/From-good-to-great.-How-to-approach-most-of-DP-problems
- https://www.pearson.com/us/higher-education/program/Levitin-Introduction-to-the-Design-and-Analysis-of-Algorithms-3rd-Edition/PGM223052.html