What conditions does a programming problem need to meet in order to be solved trough dynamic programming? What reasoning do you do in order to find out?
Once you conclude that it indeed has a DP solution then how would you go on about creating a DP algorithm that solves it? What’s the logic behind creating such algorithms?
A problem must meet two conditions in order to be solved trough dynamic programming. Citing Introduction to Algorithms, chapter 15:
In The Algorithm Design Manual, chapter 8, the author describes the three steps involved in solving a problem by dynamic programming:
As usual, the wikipedia contains an extensive discussion on the topic, if you want to dig deeper.