(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: