# dynamic programming algorithm

Dynamic Programming is an algorithmic paradigm that solves a given complex problem by breaking it into subproblems and stores the results of subproblems to avoid computing the same results again.

Following are the two main properties of a problem that suggest that the given problem can be solved using Dynamic programming.