in computer science ; dynamic programming is a way of solving problems consist of overlapping subproblems and optimal substructure .
dynamic programming is a very powerful mathematical technique , often utilised in programming , for solving optimization problems .