if(person==7){
n++; show(); return;}
for(int j=0;j<7;++j){
if(rest[person][]==1&&judge(person,j)){
rest[person][i]=8; dfs(person+1); rest[person][i]=1;
if(person==7){ //如果已经安排了7个人的休息日
n++; //记录排班方案的数量
show(); //显示当前的排班表
return; //返回上一层递归
}
for(int j=0;j<7;++j){ //遍历每一天
if(rest[person][j]==1&&judge(person,j)){ //如果rest[person][j]==1,并且满足其他条件
rest[person][j]=8; //将rest[person][j]赋值为8
dfs(person+1); //递归安排下一个人的休息日
rest[person][j]=1; //回溯,恢复未安排状态
}
}
if (person == 7) { // 如果person等于7
n++; // n加1
show(); // 调用show函数
return; // 结束当前函数
}
for (int j = 0; j < 7; ++j) { // 循环j从0到6
if (rest[person][] == 1 && judge(person, j)) { // 如果rest[person][]等于1并且judge(person, j)返回true
rest[person][i] = 8; // 将rest[person][i]赋值为8
dfs(person + 1); // 递归调用dfs函数,person加1
rest[person][i] = 1; // 将rest[person][i]恢复为1
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:回调函数的具体定义比较拗口,比较难以理解,因此比较生动的例子就是:小明到小红店里去购物,但是小红家恰好没货,因此小明留下了联系方式,等进货之后联系小明来购物
更加清晰的解释为:如果将函数指针作为参数被传递到函数中,当这个函数指针被用于调用其指向的函数时,我们就称这个函数为回调函数
回调函数的主要优势是解耦,即调用者和被调用者被分开,调用者无需了解谁是被调用者,它只需知道如果满足某条件之后,函数将被调用