描述
给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有‘a’ <‘b’ < … <‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。
格式
输入格式
只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。
输出格式
输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义: 已知S=s1,s2…sk,T=t1,t2…tk,则S < T等价于,存在p(1≤p≤k),使得s1=t1,s2=t2,…,sp−1=tp−1,sp < tp成立。
样例
输入样例
cba
输出样例
cba
cab
bca
bac
acb
abc
限制
时间限制: 1000 ms
内存限制: 65536 KB
//全排列
int n,hash[11]={0},p[11];
char a[11];
void gen(int index){
if(index==n+1){
for(int i=1;i<=n;i++){
printf("%c",a[p[i]-1]);
}
printf("\n");
//return;
}
for(int x=1;x<=n;x++){
if(hash[x]==false){
p[index]=x;
hash[x]=true;
gen(index+1);
hash[x]=false;
}
}
}
int main(){
gets(a);
n=strlen(a);
gen(1);
return 0;
}