![](http://webcf.waybackmachine.org/web/20210528032456im_/https://habrastorage.org/getpro/habr/avatars/ca5/0da/30c/ca50da30c6c4e2d825a2fa5a8ddb921d.png)
Memoization
![](https://webcf.waybackmachine.org/web/20210528032456im_/https://habrastorage.org/getpro/habr/upload_files/4ff/05f/e6d/4ff05fe6dbf8427b676484b5cf64b708.jpg)
Dynamic programming is applied to solve optimization problems. In optimization, we try to find out the maximum or minimum solution of something. It will find out the optimal solution to any problem if that solution exists. If the solution does not exist, dynamic programming is not able to get the optimal solution.
Optimization problems are the ones that require either lowest or highest possible results. We attempt to discover all the possible solutions in dynamic programming and then choose the best optimal solution. Dynamic programming problems are solved by utilizing the recursive formulas though we will not use a recursion of programming the procedures are recursive. Dynamic programming pursues the rule of optimality.
A dynamic programming working involves around following significant steps: