我们都知道全排列的定义:字符序列的所有组合。它的递归定义如下:序列A = {a1, a2, a3, ... an} ,Ai = A - {ai},序列A的排列定义为Perm(A),
Perm(A) = a1Perm(A1) , a2Perm(A2), a3Perm(A3)....anPerm(An);
由上面的递归定义可知,全排列可由递归实现,代码如下:
void Permutation(char *str, char *start)
{
if (*start == 0)
{
cout<<str<<endl;
return;
}
for (char * p = start; *p != 0; ++p)
{
char temp = *start;
*start = *p;
*p = temp;
Permutation(str, start + 1);
temp = *start;
*start = *p;
*p = temp;
}
}
May 29, 2013 @lab