阅读量:1
C语言可以使用递归来实现全排列算法。以下是一个示例代码:
#include <stdio.h> #include <string.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)); // 恢复原始顺序,保证下一次循环时数组顺序正确 } } } int main() { char str[] = "ABC"; int n = strlen(str); permute(str, 0, n - 1); // 调用全排列函数 return 0; }
以上代码的输出结果为:
ABC ACB BAC BCA CBA CAB
该算法通过递归方式生成所有可能的排列组合,并通过交换字符的位置来实现。