题目链接:https://www.acwing.com/problem/content/844/
题目如下:
#include <iostream>
#include <vector>
using namespace std;
const int N=10;
int n;
int path[N];
void backtracking(int index,vector<bool>& used);
int main(){
cin>>n;
vector<bool> used(N,false);
backtracking(0,used);//从0开始
return 0;
}
void backtracking(int index,vector<bool>& used){
if(index==n){
//满足一次全排列之后,将path中的内容全部输出
for(int i=0;i<n;i++){
cout<<path[i]<<' ';
}
cout<<endl;
return ;
}
for(int i=1;i<=n;i++){
if(used[i]==true) continue;
used[i]=true;
path[index]=i;
backtracking(index+1,used);//恢复现场
used[i]=false;
//原本此处为path.pop_back();但是数组就不需要了,因为此时path的索引位置依然为index
}
}