给定一个整数 n n n,将数字 1 ∼ n 1∼n 1∼n 排成一排,将会有很多种排列方法。
现在,请你按照字典序将所有的排列方法输出。
共一行,包含一个整数 n n n 。
按字典序输出所有排列方案,每个方案占一行。
1≤n≤7
3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
#include
using namespace std;
const int N = 8;
int n,path[N];
bool vis[N];
void dfs(int x) {
if(x==n){//搜索到第n+1次就输出
for(int i=0;i<n;i++)
cout<<path[i]<<' ';
cout<<endl;
}
for(int i=1;i<=n;i++)
if(!vis[i]){
path[x]=i;//记录
vis[i]=true;//标记已被使用
dfs(x+1);//搜索下一个
vis[i]=false;//还原
}
}
int main() {
cin>>n;
dfs(0);
return 0;
}