题目描述
我们称nn的全排列为1,2,3...,n1,2,3...,n按照一定顺序组成的序列。比如33的所有全排列为:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
现在请你生成nn的所有全排列
输入格式
第一行一个整数nn
输出格式
输出所有nn的全排列,按照字典序从小到大输出。
字典序比较大小方法为从第一个数字开始比较,若不同则比较出来大小,否则接着比较第二位,直到比较出来大小位置。样例中就是按照字典序排序后的结果。
样例
样例输入
3
Copy
样例输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
数据范围与提示
1 <= n <= 81<=n<=8
上代码:
#include<bits/stdc++.h>
using namespace std;
const int N=20;
int to[N];
int a[N];
int n;
void search(int t){
if(t>n){
for(int i=1;i<=n;i++)
cout << a[i] << " ";
cout << endl;
return;
}for(int i=1;i<=n;i++){
if(to[i]==1) continue;
a[t]=i;
to[i]=1;
search(t+1);
to[i]=0;
}
}
int main() {
cin >> n;
search(1);
return 0;
}
代码供参考,希望能帮到大家!