I'm interested in resources / more information about backtracking specifically that are based on recursion. I came across this topic through several examples, e.g. all possible subset generation, exact set cover, eight queens problem and I wanted to understand it in more detail. For example, the following multiple recursion occurs in the subset generation problem:
int cnt;
vector<int> subset;
void print_vec(vector<int> vec)
{
for (int i=0; i < (int) vec.size(); ++i) {printf("%d ", vec[i]);}
}
void search(int k, int n)
{
if (k == n)
{
//process subset
printf("%d: ", cnt++); print_vec(subset); printf("\n");
}
else
{
search(k+1, n);
subset.push_back(k);
search(k+1, n);
subset.pop_back();
}
}Any pointers and resources on multiple recursion are welcomed!