Algorithm Classification - Dynamic Programming