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)
        }
    }
}

results matching ""

    No results matching ""