给定字符串S[o...n-1],求出所有的S的全排列:
ABC---ABC ACB BCA BAC CAB CBA
一:递归求法
#include<iostream>
#include<string>
using namespace std;
void print_str(const int*a, int size){
for(int i=0; i < size; i++){
std::cout<<a[i]<<" ";
}
std::cout<<std::endl;
}
void permutation(int *a, int size, int n){
if(n == size-1){
print_str(a, size);
}
for(int i=n; i < size; i++){
swap(a[i], a[n]);
permutation(a, size, n+1);
swap(a[i], a[n]);
}
}
void swap(int a, int b){
int temp;
temp = a;
a = b;
b = temp;
}
int main(int argc, char*argv[]){
int a[] = {1, 2, 3, 4};
permutation(a, sizeof(a)/sizeof(int), 0);
return 0;
}