#include<algorithm>
using namespace std;
#include<stdio.h>
#include<string.h>
char str[20];
char sorted[20];
void permutation(int n,char* org,char* aft,int cur);
int main()
{
//
freopen("input.txt","r",stdin);
int numcase;
scanf("%d",&numcase);
while(numcase--)
{
scanf("%s",str);
sort(str,str+strlen(str));
permutation(strlen(str),str,sorted,0);
putchar('\n');
}
}
void permutation(int n,char* org,char* aft,int cur)
{
if(cur==n)
{
aft[cur]='\0';
puts(aft);
return;
}
for(int i = 0; i < n ;i++)
{
if(i&&org[i]==org[i-1]) continue;
int cnt1,cnt2;
cnt1=cnt2=0;
for(int j = 0; j < cur;j++)
if(aft[j]==org[i]) cnt1++;
for(int j = 0; j < n;j++)
if(org[j]==org[i]) cnt2++;
if(cnt1<cnt2)
{
aft[cur]=org[i];
permutation(n,org,aft,cur+1);
}
}
}
10098uva快速生成有序排列
最新推荐文章于 2017-05-15 03:08:49 发布