以下是一个用C语言实现全排列的示例代码:

#include <stdio.h>

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

void permute(char *str, int l, int r) {
    int i;
    if (l == r) {
        printf("%s\n", str);
    } else {
        for (i = l; i <= r; i++) {
            swap((str + l), (str + i));
            permute(str, l + 1, r);
            swap((str + l), (str + i)); // backtrack
        }
    }
}

int main() {
    char str[] = "ABC";
    int n = strlen(str);
    permute(str, 0, n - 1);
    return 0;
}

这个代码使用递归的方式实现全排列。它的基本思路是,对于给定的字符串,我们依次将每个字符与其后面的字符交换,然后递归地生成剩余字符的全排列。每次递归调用时,我们都固定了一个字符,然后递归生成剩余字符的全排列。

permute 函数中,我们使用 swap 函数来交换字符。在每次递归调用之前,我们将当前字符与下一个字符交换,然后递归生成剩余字符的全排列。然后,我们再次交换这两个字符,以便进行下一轮迭代。

main 函数中,我们首先将要全排列的字符串传递给 permute 函数,并指定字符串的起始索引和结束索引。然后,我们调用 permute 函数来生成全排列。

以上代码的输出结果为:

ABC
ACB
BAC
BCA
CBA
CAB
全排列C语言

原文地址: http://www.cveoy.top/t/topic/i6Bf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录