The tricky part to learn, and one that I'm sure comes with experience, is how to identify the subproblem + recurrence relation. One thing this clarified for me is the construction of the grid and how it is dependent on inputs because of the DAG. But you can have a recurrence relation that uses more than two sub-problems. i.e. the DP method for calculating Levenshtein distance involves a recurrence relation with 3 previous values (subtraction, addition, substitution).