字符串全排列

来源:互联网 发布:c语言ceil 编辑:程序博客网 时间:2024/06/10 07:51
void swap_char(char &a, char &b){    char t = a;    a = b;    b = t;}// 重复字符处理bool foo(char* str, char p, int begins, int ends){    for(int i = begins; i <= ends; ++i)        if (str[i] == p) return true;    return false;}// 统计static int n=0;// 递归void permutation_1(char *str, int left, int right){    if (left>=right)    {        ++n;        printf("%s\n", str);        return;    }    for (int i=left; i < right; ++i)    {        if (left != i && (str[left] == str[i] || foo(str, str[i], left+1, i-1))) continue;        swap_char(str[left], str[i]);        permutation_1(str, left+1, right);        swap_char(str[left], str[i]);    }}