How to use DFS
关于DFS的三种问题,模板也略有不同,
第一种,返回值是true/false。
第二种,求个数,设全局counter,返回值是void;求所有解信息,设result,返回值void。
第三种,设个全局变量best,返回值是void。
第一种类型(判断有没有解)的模版
boolean solve(Node n) {
if n is a leaf node {
if the leaf is a goal node, return true
else return false
} else {
for each child c of n {
if solve(c) succeeds, return true
}
return false
}
}
第二种类型(求所有解的信息)的模版
void solve(Node n) {
if n is a leaf node {
if the leaf is a goal node, count++ or update result, return;
else return
} else {
for each child c of n {
solve(c)
}
}
}
第三种类型(求最优解)的模版
void solve(Node n) {
if n is a leaf node {
if the leaf is a goal node, update best result, return;
else return
} else {
for each child c of n {
solve(c)
}
}
}