The process of reading a problem and applying dynamic programming to it has always seemed flimsy to me. Even after getting accepted, I do not feel like I fully understand the state and transitions that I’ve come up with.
Is there a way to prove that the recurrence relation behind the dp actually reflects the structure of a problem?
Are there any books which explain in depth how to come up with the recurrence relations that appear in dynamic programming problems?



