Backtracking
Explores all possibilities by building a solution incrementally and abandoning a path (backtracking) as soon as it becomes invalid. Used for: Sudoku, constraint satisfaction, maze solving. Systematically exhausts the solution space.
Dynamic Programming
Breaks a problem into overlapping sub-problems; solves each once and stores results (memoisation). Avoids recomputation. Used for: Fibonacci, shortest paths (Bellman-Ford), longest common subsequence.
Divide and Conquer
Split the problem into independent sub-problems; solve recursively; combine results. Sub-problems do not overlap (unlike DP). Examples: merge sort, binary search, quicksort.
Greedy Algorithm
Always makes the locally optimal choice at each step, hoping it leads to a globally optimal solution. Fast and simple but not always correct. Examples: Dijkstra's, Prim's, Huffman coding.