ans; //答案,用全局变量表示
void dfs(层数,其他参数){
if (出局判断){ //到达最底层,或者满足条件退出
更新答案; //答案一般用全局变量表示
return; //返回到上一层
}
(剪枝) //在进一步DFS之前剪枝
for (枚举下一层可能的情况) //**!!!对每一个情况继续DFS 坐标变化!!!***
if (used[i] == 0) { //如果状态i没有用过,就可以进入下一层
used[i] = 1; //标记状态i,表示已经用过,在更底层不能再使用
dfs(层数+1,其他参数); //下一层
used[i] = 0; //恢复状态,回溯时,不影响上一层对这个状态的使用
}
return; //返回到上一层
}
深度优先搜索总结:
dfs的两步:截至条件和搜索条件
回溯