A Dynamic Programming Approach