以下是使用递归实现全排列的C语言代码示例:

#include <stdio.h>

void swap(char *a, char *b) {
    char temp = *a;
    *a = *b;
    *b = temp;
}

void permute(char *str, int start, int end) {
    if (start == end) { // 打印排列好的字符串
        printf('%s\n', str);
    } else {
        for (int i = start; i <= end; i++) {
            swap((str + start), (str + i));
            permute(str, start + 1, end);
            swap((str + start), (str + i)); // 恢复字符串
        } 
    }
}

int main() {
    char str[] = "abc";
    int n = sizeof(str) / sizeof(str[0]);
    permute(str, 0, n - 2);
    return 0;
}

这个代码将字符串中的每个字符与其后面的字符交换,生成所有可能的排列,并打印出来。例如,对于字符串'abc',它将生成以下排列:

abc
acb
bac
bca
cab
cba

标签: 常规


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