全排列的两种写法
1.使用交换法输出全排列
递归处理,每次把x和x及其以后的数中的一个交换
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=15;
int n,a[MAXN];
void mov(int x){
if (x==n+1){
for (int i=1;i<=n;i++) cout<<a[i];
cout<<endl;
}
for (int i=x;i<=n;i++){
swap(a[x],a[i]);
mov(x+1);
swap(a[x],a[i]);
}
}
int main(){
while (cin>>n){
for (int i=1;i<=n;i++) a[i]=i;
mov(1);
}
return 0;
}
2.使用<algorithm>里面的next_permutation函数
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n,a[25];
while (cin>>n){
for (int i=1;i<=n;i++) a[i]=i;
do{
for (int i=1;i<=n;i++) cout<<a[i];
cout<<endl;
}while (next_permutation(a+1,a+n+1));
}
return 0;
}