经典全排列
递归:
#include <iostream>
#include <cstdio>
int a[50];
void sw(int x,int y){
int temp=a[x];
a[x]=a[y];
a[y]=temp;
}
void p(int n){
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
void perm(int x,int y){
if(x==y)
p(y+1);
else
for(int i=x;i<=y;i++){
sw(x,i);
perm(x+1,y);
sw(x,i);
}
}
int main() {
a[0]=8;
a[1]=9;
a[2]=10;
a[3]=18;
perm(0,3);
return 0;
}
非递归:STL的next_permutation()函数