dfs全排列
更新对全排列递归方法的理解
u是一个局部变量,它是用来指向每一条排列序列的元素的
st是全局变量数组,它能保证每一条单独的线路不发生重复
如上图所示最初u是要从1到n(第一行的1、2、3)逐序遍历的,但是指向1的时候u要先进行深度,到达下一层的时候它想要向右走(1、2、 ——> 1、3、),但是又要先深度到下一层,直到最后一层后才可以回溯。
#include<bits stdc++.h>
using namespace std;
int n, e[8], path[8], idx = 0;
bool st[8];
void dfs(int u){
if(u == n){
for(int i=0; i<n; i++) printf("%d ", path[i]); puts(""); } for(int i="1;" i<="n;" i++){ if(!st[i]){ path[u]="i;" st[i]="true;" dfs(u + 1); int main(){ cin>> n;
dfs(0);
return 0;
}
</n;></bits>
Original: https://www.cnblogs.com/livefly/p/15068332.html
Author: ture?
Title: DFS全排列
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/584033/
转载文章受原作者版权保护。转载请注明原作者出处!