1.作用:输入n,输出1-n的全排列,无可重集。
代码:
#include<iostream>
#include<cstdio>
using namespace std;
void print_permutation(int n , int *A ,int cur){
if(cur == n){
for(int i = 0 ; i < n ;i++){
printf("%d",A[i]);
}
printf("\n");
}
else{
for(int i = 1 ; i <= n ;i++){
int ok = 1 ;
for(int j = 0 ; j < cur ; j++){
if(A[j]==i){
ok = 0 ;
}
}
if(ok){
A[cur]=i;
print_permutation(n,A,cur+1);
}
}
}
}
int main(){
int n ;
scanf("%d",&n);
int a[10000];
print_permutation(n,a,0);
return 0 ;
}
2.作用:STL,输入n,和n个数组元素p[i],得到全排列。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std ;
int main(){
int n ,p[10];
scanf("%d",&n);
for(int i = 0 ; i < n ; i++) scanf("%d",&p[i]);
sort(p,p+n);
do{
for(int i = 0 ; i < n ; i++) printf("%d",p[i]);
printf("\n");
}while(next_permutation(p,p+n));
return 0 ;
}