Introduction To

Dynamic Programming Algorithms

Dynamic Programming  Algorithm is an algorithm technique used primarily for optimizing problems, where we wish to find the “best” way of doing something. It is both a mathematical optimization method and a computer programming method.

There are two key attributes that a problem must have in order for dynamic programming to be applicable: optimal substructure and overlapping sub-problems. If a problem can be solved by combining optimal solutions to non-overlapping sub-problems, the strategy is called "divide and conquer" instead. This is why merge sort and quick sort are not classified as dynamic programming problems.

The technique  was developed by Richard Bellman in the 1950s and has found applications in numerous fields, from aerospace engineering to economics.


Course Structure

Basic Problems

Intermediate Problems

Hard Problems

Subscribe to Our Newsletter