Dynamic Programming

State design, transitions, memoization vs tabulation.