要將一串數字進行全排列,可以使用遞歸算法來實現。以下是一個C語言實現的全排列算法示例:
#include <stdio.h>
// 交換兩個元素的值
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
// 遞歸函數,生成所有可能的排列
void permute(int *nums, int start, int end) {
if (start == end) {
for (int i = 0; i <= end; i++) {
printf("%d ", nums[i]);
}
printf("\n");
} else {
for (int i = start; i <= end; i++) {
swap(&nums[start], &nums[i]);
permute(nums, start + 1, end);
swap(&nums[start], &nums[i]); // 恢復原數組順序
}
}
}
int main() {
int nums[] = {1, 2, 3}; // 要進行全排列的數字序列
int n = sizeof(nums) / sizeof(nums[0]); // 數組長度
permute(nums, 0, n - 1);
return 0;
}
運行以上代碼,會輸出數組 {1, 2, 3} 的所有全排列結果。你可以根據需要修改輸入數組來得到其他數字的全排列。