Dynamic Programming is mostly used for solving optimization problems
(these are problems that have one or more optimal solutions). Normally,
if an optimal solution to a problem contains overlapping subproblems and
each subproblem has an optimal solution within it (optimal
substructure), then this problem is the perfect candidate for
dynamicprogramming. (e.g. fastest way through factory to stations S_{i,j }is through Si,j1. This implies that S_{i,j1} is the fastest way through the factory up to that point). Steps of development of a a dynamicprogramming algorithm:

Foundations > Algorithms >