DFS和BFS

发布时间 2023-11-14 17:18:34作者: rw156

DFS :  acwing 842 递归搜索树

 

 1 #include<iostream>
 2 using namespace std;
 3 
 4 const int N = 10;
 5 int n;
 6 int path[N];
 7 bool st[N];
 8 
 9 void dfs(int u)
10 {
11     if(u == n) //一个分支走到头
12     {
13         for (int i = 0; i < n; i ++ ) printf("%d ",path[i]); //分别输出分支的每一个数
14         cout << endl;
15         return ; //返回上一层
16     }
17     
18     for (int i = 1; i <= n; i ++ ) //空位上可选择的数字为 1 ~ n;
19     {
20         if(!st[i]) //如果数字i没有被用过
21         {
22             path[u] = i;   //这个数填入空位 按顺序
23             st[i] = true;  //数字被用,修改状态
24             dfs(u + 1);    //填下一个位置
25             st[i] = false;  //回溯,取出i
26         }
27     }
28 }
29 
30 int main()
31 {
32     cin >> n;
33 
34     dfs(0);
35     
36     return 0;
37 }
View Code