dynamic programming
problem optimization method that simplifies a complicated problem by decomposing it into simpler subproblems recursively
problem optimization method that simplifies a complicated problem by decomposing it into simpler subproblems recursively