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
該算法通過遞歸方式生成所有可能的排列組合,并通過交換字符的位置來實現。