title: How do you reason whether an exercise has a dynamic programming solution or not? If it has then how do you develop the algorithm to solve it?
body: <p>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?</p>
  
  <p>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?</p>