Dynamic Programming Info

: The optimal solution to the larger problem can be constructed from the optimal solutions of its subproblems. Common Approaches

: This approach starts with the original complex problem and breaks it down recursively. It uses a data structure (like an array or hash map) to store ("memoize") the results of subproblems so they can be reused when encountered again. Dynamic Programming

: This approach starts by solving the smallest possible subproblems first and iteratively builds up to the solution of the original problem, usually filling out a table (matrix or array) in the process. : The optimal solution to the larger problem

There are two standard ways to implement dynamic programming solutions: Dynamic Programming

To apply dynamic programming effectively, a problem must typically exhibit two primary properties: