a coding approach that aims to eliminate repeated calculations  basic idea: store results that might need to be repeatedly calculated (memoisation)
a technique that avoids the recursive explosion by recording answers in a table.
it solves subset of problem and then use that info to solve the more difficult original process