pku1256

#pragma warning(disable:4786)
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;

int t,len,num;
char s[15],s1[15];
bool used[15],sel[15];

int cmp(const void *a,const void *b){
char ca=*(char*)a,cb=*(char*)b;
int da,db;

if(ca>='A'&&ca<='Z')
da=(ca-'A')%26;
else
da=(ca-'a')%26;

if(cb>='A'&&cb<='Z')
db=(cb-'A')%26;
else
db=(cb-'a')%26;

if(da>db)
return 1;
else
if(da<db){
return -1;
}
else{
return ca-cb;
}
}

void DFS(int d){
int i;
if(d==len){
s1[len]=0;
printf("%s\n",s1);
}
else{
for(i=0;i<len;i++){
if(!used[i]){
if(s[i]==s1[d]){
continue;
}
s1[d]=s[i];used[i]=1;
DFS(d+1);
used[i]=0;
}
}
s1[d]=0;//置为0,以免影响下一轮
}
}

int main()
{
int i;
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%s",s);len=strlen(s);
qsort(s,len,1,cmp);
num=1;
memset(s1,0,15);memset(used,0,15);
DFS(0);
}
return 1;
}

你可能感兴趣的:(pku)