What is dynamic programming?
A dynamic programming algorithm solves every subsubproblem just once and then saves its answer in a table, avoiding the work of recomputing the answer every time the subsubproblem is encountered.
-- Cormen et al. "Introduction to Algorithms",