输出一个字符串所有排列。注意有重复字符。
1
char[] p;
2
void perm(char s[], int i, int n){
3
int j;
4
char temp;
5
for(j=0;j<n;++j){
6
if(j!=0 && s[j]==s[j-1]);
7
elseif(s[j]!='@'){
8
p[i]=s[j];
9
s[j]='@';
10
if(i==n-1){
11
p[n]='\0';
12
printf("%s", p);
13
}else{
14
perm(s,i+1,n);
15
}
16
s[j]=p[i];
17
}
18
}
19
}
char[] p;2
void perm(char s[], int i, int n){3
int j;4
char temp;5
for(j=0;j<n;++j){6
if(j!=0 && s[j]==s[j-1]);7
elseif(s[j]!='@'){8
p[i]=s[j];9
s[j]='@';10
if(i==n-1){11
p[n]='\0';12
printf("%s", p);13
}else{14
perm(s,i+1,n);15
}16
s[j]=p[i];17
}18
}19
}1
void main() {
2
char s[N];
3
sort(s);
4
perm(s,0,strlen(s));
5
}
6
void main() {2
char s[N];3
sort(s);4
perm(s,0,strlen(s));5
}6




浙公网安备 33010602011771号