去重的字符串全排列问题

直接上代码

 

#include <stdio.h>
#include <stdlib.h>

void swap(char* x, char* y)
{
    char tmp;
    tmp = *x;
    *x = *y;
    *y = tmp;
}

bool is_swap(char *str, int start, int end)
{
  int i = start;
for(; i < end; i++)
    if(str[i] == str[end])
      reurn false; return true;
}
void permute(char *str, int i, int n) { int j; if (i == n) printf("%s\n", str); else{ for (j = i; j <= n; j++){ if(is_swap(str, i, j))
      {

        swap((str
+i), (str+j)); permute(str, i+1, n); swap((str+i), (str+j));
} } } }
int main() { //method2 char a[] = "ABACCDD"; permute(a,0,6); return 0; }
posted @ 2012-08-29 22:14  CobbLiu  阅读(725)  评论(0)    收藏  举报