Differences between divide & conquer and dynamic programming?
Divide & Conquer:
Top-Down
Recursively divides the input into disjoint subinstances
Often for decision of computation problems
Dynamic Programming:
Bottom-Up
Divides the instance into overlapping subinstances
Solutions to subinstances are stored, not recomputed
Often for optimisation problems