输出一个字符串所有排列。注意有重复字符。
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


