//深搜求全排列
#include<bits/stdc++.h>
using namespace std;
const int N=10;
int visit[N];
int path[N];
int n;
void dfs(int u){
if(u==n){
//当u==n时,即找到一种方案
for(int i=0;i<n;i++)
printf("%d ",path[i]);
puts("");//每种方案之后换行
return;
}
//u!=n
for(int i=1;i<=n;i++){
//找一个还未被用过的数
if(visit[i]==0){
path[u]=i;
visit[i]=1;
dfs(u+1);
visit[i]=0;//恢复现场
}
}
}
int main(){
scanf("%d",&n);
dfs(0);
}
dfs求全排列 C++版
最新推荐文章于 2024-05-31 14:42:05 发布