Dynamic programming has been one the hardest things for me to master. Why? Because it’s a totally different way of thinking that requires a different mindset when solving problems that can use dynamic programming.
So my way of learning dynamic programming is to just do many practice problems as possible to learn about all the tricks and try to apply it to future problems.
The following is a summary of various dynamic programming.
Max Value Contiguous Subsequence
Making Change
Longest Increasing Subsequence
Box Stacking
Billboards
(Same as Weighted Value Schedule)