How to master Dynamic Programming?
Not sure why I can't just comment.  All I want to do is share a link:

http://people.csail.mit.edu/bdean/6.046/dp/

Or better yet:  Deciding on Sub-Problems for Dynamic Programming

This is a duplicate.