這里有對全排列函數(shù)permutation的介紹
http://hi.baidu.com/sunshine_0316/blog/item/6f87a044bf30f320cffca381.html
#include<iostream>
#include<map>
#include<algorithm>

using namespace std;

typedef struct node


{
char ch;
int flag;
}node;

bool cmp(const node a,const node b)


{
return a.flag<b.flag;
}

int main()


{
int cas,i;
char str[15],ch;
map<char,int> mp;
for(ch='A',i=1;ch<='Z';ch++,i=i+2) mp[ch]=i;
for(ch='a',i=2;ch<='z';ch++,i=i+2) mp[ch]=i;
scanf("%d",&cas);
while(cas--)

{
scanf("%s",str);
int len=strlen(str);
node p[15];
for(i=0;i<len;i++)

{
p[i].ch=str[i];
p[i].flag=mp[str[i]];
}
sort(p,p+len,cmp);
do

{
for(i=0;i<len;i++)
printf("%c",p[i].ch);
printf("\n");
}while(next_permutation(p,p+len,cmp));
}
return 0;
}

