void dfs(int step)
{
if(边界)//找到解 or 走不下去
{
......
return;
}
for(...)//尝试每一种可能
{
if(ischeck(...)==false)
{
ischeck(...)=true;
dfs(step+1);
}
ischeck(...)=false;//回溯
}
}
void dfs(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
dfs(路径,选择列表); // 递归
回溯,撤销处理结果
}
}