A method for solving complex problems by breaking them down into simpler subproblems, solving each subproblem just once, and storing their solutions.
"Dynamic programming is used in algorithms that solve optimization problems, such as finding the shortest path in a graph."