Pruning Strategies

Reducing the search space.

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.