panda_1

简单dfs--回溯

题目:输入n,讨论能组成n位数多少种?

思路:采用dfs,原理递归

void dfs(int u)
{
    if(u == n)
    {
        for(int i = 0; i < n; i++)cout << path[i] << " ";//每次输出一层
        cout << endl;
        return;
    }
    for(int i = 1; i <= n; i++)
    {
        if(!st[i])
        {
            path[u] = i;
            st[i] = !st[i];
            dfs(u + 1);
            st[i] = !st[i];//回溯状态
        }
    }
}

posted on 2021-07-06 19:43  panda_1  阅读(24)  评论(0)    收藏  举报

导航