字符串全排列代码

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;
            }
      }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值