字符串全排列代码

Permutation(
char
 a[], 
int
 start, 
int
 end)
{
int i;
char temp;
if (start == end)
{
for (i = 0 ; i <= end; i ++ )
printf(
" %c " ,a[i]);
printf(
" /n " );
}
else
{
for (i = start; i <= end; i ++ )
{
temp
= a[start]; a[start] = a[i]; a[i] = temp;
Permutation(a, start
+ 1 , end);
temp
= a[start]; a[start] = a[i]; a[i] = temp;
}
}
}

第二种:
void Permutation(char * pStr, char * pBegin)
{
      if (!pStr || !pBegin)
            return ;

      // if pBegin points to the end of string,
      // this round of permutation is finished,
      // print the permuted string
      if (*pBegin == '/0' )
      {
            printf("%s/n" , pStr);
      }
      // otherwise, permute string
      else
      {
            for (char * pCh = pBegin; *pCh != '/0' ; ++ pCh)
            {
                  // swap pCh and pBegin
                  char temp = *pCh;
                  *pCh = *pBegin;
                  *pBegin = temp;

                  Permutation(pStr, pBegin + 1);

                  // restore pCh and pBegin

                  PS:改变字符串顺序后必须还原回来!

                  temp = *pCh;
                  *pCh = *pBegin;
                  *pBegin = temp;
            }
      }
}



你可能感兴趣的:(c,String,permutation)