活动 - AcWing 经典DFS 全排列
#include<iostream> using namespace std ; const int N = 10 ; int n ; int path[N],u[N]; void dfs(int m){ if(m > n){ for(int i = 1; i <= n ; i ++) cout << path[i] << " "; cout << endl ; return ; } for(int i = 1; i <= n ; i ++){ if(!u[i]){ path[m] = i; u[i] ++ ; dfs(m+1); u[i] -- ; } } } int main(){ cin >> n ; dfs(1); return 0 ; }
关于dfs的用法有很多 其中dfs找所有路径 和 dfs 找所有排列方式 是最常用的
对于dfs有一种基本的代码框架