dfs

root 站长 2022-01-23 16:19:57 2022-01-23 16:20:21 1
const int N = ;//N看题目数据范围

int n;
bool st[N];//存节点是否被访问过
char x[N];//存状态,可能是二维,也可能是多个

void dfs(int u)
{
    if(u == n)//无需搜索
    {
        for(int i = ;i ;i ) 
        {
            cout << ;//输出
        }
        return;
    }
    for(int i = ;i ;i )//搜索
    {
        //下面是上面的那个回溯模板
        st[i] = true;//节点被访问
        /*......*/;//干一些操作
        dfs(u + 1); // 递归下一层
        st[i] = false;
        /*......*/;//还原现场,回溯
    }
}

作者:cht 链接:https://www.acwing.com/blog/content/672/ 来源:AcWing 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

{{ vote && vote.total.up }}