Dynamic programming is a method of providing solutions to potential problems exhibiting the properties of overlapping sub problems and optimal structure. This is highly used in dynamic programming. The advantage being the less time consumption in comparison to other amateur methods. It has to be kept in mind that the term programming in the field has got nothing to do with computer programming at all. On the other hand it is derived from the term mathematical programming which is a similar word used for optimization. Here by meaning that a program can be an optimal plan for the produced action. The typical example could be of a finalized schedule of events at an exhibition. This leads to the concept of programming being a helper in finding an acceptable plan of action, which can also be termed as an algorithm The subproblems are, themselves, solved by dividing them into sub-subproblems, and so on, until we reach some simple case that is solvable in constant time. Overlapping subproblems means that the same subproblems are used to solve many different larger problems. Example could be of Fibonacci sequence; F3 = F1 + F2 and F4 = F2 + F3 — computing each number involves computing F2. Because both F3 and F4 are needed to compute F5, a naive approach to computing F5 may end up computing F2 twice or more. It means that whenever we encounter with overlapping subproblems, a naive approach may waste to,e recomputing optimal solutions to the already solved subproblems.