字符串的全排列

假如给定一字符串“ABCDE” 编写一段程序输出它的全排列,代码如下:

void DoPermute(char* in, char* out,char* used,int length,int recurse_level)
{
    int i;
   if(recurse_level == length)
   {
       printf("%s/n",out); //print permutation
      return;
   }

   //recursive case
   for(i = 0; i < length; i++)
  {
     if(used[i]) //if used, skip to next letter
       continue;
    out[recurse_level] = in[i]; //put current letter in output
    used[i] = 1;
    DoPermute(in, out,used,length,recurse_level + 1);
    used[i] = 0;
   }
}

void Permute(char* p_string)
{
    permute_count = 0;
    int length = strlen(p_string) + 1;
   char* out_put = new char[length];
   memset(out_put,0,length);
   char* used = new char[length];
   memset(used,0,length - 1);

   DoPermute(p_string,out_put,used,length - 1, 0);

   delete out_put;
   delete used;

int main(int argc, char* argv[])
{

 char s_permute[] = "abcde";
 Permute(s_permute); //call fully permute
 return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值