如何在C中获取字符串的所有排列

时间:2018-12-04 04:48:58

标签: c string algorithm permutation permute

因此,我试图在C中查找字符串的所有可能排列。我将其与Bell算法配合使用,但是只能找到输入字符串长度的排列,所以我将如何查找所有字符串。例如如果我有ab,那么排列将是babba。我尝试了以下方法,但返回了一些奇怪的东西。

for (i = 0; i < strlen(a) - 1; i++) {
    permute(a, 0, i);
}

置换是

void permute(char *a, int i, int n){
    int j;
    if (i == n){
        printf("%s\n", a);
    }
    else
    {
        for (j = i; j <= n; j++)
        {
            swap((a+i), (a+j));
            permute(a, i+1, n);
            swap((a+i), (a+j));
        }
    }
}

交换功能是

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

编辑:这被标记为某条帖子的副本,该帖子实际上并没有帮助我,但在Generating permutations of a string in a range

处找到了解决方案

0 个答案:

没有答案