切记切记,回溯是回溯到上一个状态,dfs(3)->dfs(2)【图二4,5两步骤】
#include<bits/stdc++.h>
using namespace std;
int n;
bool vis[10];
int path[10];
void dfs(int step){
if(step>n){
for(int i=1;i<=n;i++)cout<<path[i]<<" ";
cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(!vis[i]){
path[step]=i;
vis[i]=true;
dfs(step+1);
vis[i]=false;
}
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}