C语言实现全排列算法:递归方法详解
以下是使用递归实现全排列的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 著作权归作者所有。请勿转载和采集!