要将一串数字进行全排列,可以使用递归算法来实现。以下是一个C语言实现的全排列算法示例:
#include// 交换两个元素的值 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} 的所有全排列结果。你可以根据需要修改输入数组来得到其他数字的全排列。