(DP) is a technique in computer programming that helps to efficiently solve a class of problems that have overlapping sub-problems and optimal substructure property.

Problems must have:

  1. overlapping sub-problems
  2. optimal substructure property.