排列数字dfs

 #include<iostream>

using namespace std;

const int N=10;

bool st[N];//记录数字是否被使用

int path[N];//输出所有可能的组合

int n;

int dfs(int u){//u表示深度

if(u>n){

for(int i=1;i<=n;i++){

cout<<path[i]<<" ";

cout<<endl;

}

for(int i=1;i<=n;i++){

if(!st[i]){//如果i没有被遍历过

path[u]=i;//让这一层的第一个数字等于i

st[i]=true;

dfs(u+1);//开始遍历下一层

st[i]=false;//当遍历到最后一层了,回溯继续开始遍历

}

}

}

int main(){

cin>>n;

dfs(1);//先从第一层开始遍历

}

 

posted @ 2023-03-14 20:17  chenxinyue  阅读(13)  评论(0编辑  收藏  举报