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
标签:10,int,dfs,BFS,DFS,path From: https://www.cnblogs.com/rw666/p/17832087.html