c语言全排列递归算法怎么实现

avatar
作者
猴君
阅读量: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 

该算法通过递归方式生成所有可能的排列组合,并通过交换字符的位置来实现。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!