Usually, it take exponential time O(2^N), O(C^N);
void backtrack() { if(reject) return; if(accept) output; foreach(var subproblem n subproblems) backtrack(); }