#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL;
const int N=10;
int n;
int a[N];
bool flag[N]; //标记某个数是否被使用过 0 未使用 1已经使用
void dfs(int k){ //k 需要填数的空
if(k>n){
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
return ; //停止搜索
}
for(int i=1;i<=n;i++){
if(flag[i]==0){
a[k]=i;
flag[i]=1;
dfs(k+1);
flag[i]=0;
}
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}
回溯法
最新推荐文章于 2024-08-30 15:57:36 发布