Dynamic Programming (DP) is a problem-solving technique that breaks complex problems into smaller subproblems and stores their solutions to avoid recomputing them. It's like solving a jigsaw puzzle: once you figure out how to fit a piece, you remember it instead of trying again.
Without DP: Calculate fib(5) recalculates fib(3) multiple times With DP: Calculate once, store it, reuse it