Pruning eliminates invalid branches early.
Early termination: Stop if remaining choices can't complete solution.
Constraint propagation: Check validity before recursing.
Ordering: Try promising choices first (e.g., cells with fewest candidates).
Symmetry breaking: Force canonical order to avoid duplicates.
// Combinations: not enough elements
if n - start + 1 < k - current.length:
return
Good pruning makes exponential problems tractable.