字符串的全排列

来源:互联网 发布:人工智能技术使用情况 编辑:程序博客网 时间:2024/04/29 19:42

2007-03-13 | 字符串的全排列

转自:http://dododododo.blog.sohu.com/

 

#include <string.h>
void permute(char *s, char *mark,char *out,int len,int recurlevel)
{
 int i=0;
 for (i=0; i<len; i++)
 {
  if (1 == mark[i])
   break;
 }
 if (len==i)
 {
  printf("%s/n",out);
  return ;
 }
 
 for (i=0;i<len;i++)
 {
  if (0 == mark[i])
  {
   continue;
  }
  
  out[recurlevel] = s[i];
  mark[i] = 0;
  permute(s,mark, out,len,recurlevel+1);
  mark[i] = 1;
 
  
 }
}

void prepermute(char *s)
{
 int i = 0;
 int len = strlen(s);

 char *mark = new char[len+1];
 char *output = new char[len+1];
 if (!mark || !output)
 {
  return ;
 }
 for (i=0;i<len;i++)
 {
  output[i] = 0;
  mark[i] = 1;
 }
 mark[len]='/0';
 output[len] = '/0';

 permute(s, mark, output,len,0);
}

////////////////////////////////////