题意:输出字符串的全排列
注释:去看STL的next_permutation函数,无比强大
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
void print_permutation(int n, char *p, char * a,int cur){
if(cur == n){
for(int i = 0; i < n; i++)
printf("%c", a[i]);
printf("\n");
}
else
for(int i = 0; i < n; i++){
if(!i || p[i] != p[i - 1])
{
int c1 = 0, c2 = 0;
for(int j = 0; j < cur; j++)
if(a[j] == p[i])
c1++;
for(int j = 0; j < n; j++)
if(p[i] == p[j])
c2++;
if(c1 < c2)
{
a[cur] = p[i];
print_permutation(n, p, a, cur + 1);
}
}
}
}
int main(){
int n;
scanf("%d", &n);
getchar();
while(n--){
char s[15], a[15];
gets(s);
int l = strlen(s);
sort(s, s + l);
print_permutation(l, s, a, 0);
printf("\n");
}
return 0;
}