Dynamic programming: Memoization : it is memorizing the results of some specific states, which can then be later accessed to solve other sub-problems.