C语言排列问题有四个,互不相同的数字,请按序输出,由其中三个不重复数字组成的排列
时间: 2024-10-23 09:16:34 浏览: 40
在C语言中,处理四个互不相同的数字并生成所有可能的三个数不重复的排列,可以采用递归的方式来实现。这里我们通常会使用回溯法。下面是一个简单的示例:
```c
#include <stdio.h>
// 排列函数,接收一个数组、起始位置和结束位置
void permute(int arr[], int l, int r) {
if (l == r) {
// 如果到达了最后一位,打印这个组合
for (int i = l; i <= r; ++i)
printf("%d", arr[i]);
printf("\n");
} else {
for (int i = l; i <= r; ++i) {
// 尝试将当前元素放在第一位
swap(&arr[l], &arr[i]);
permute(arr, l + 1, r);
// 恢复状态,尝试下一个元素
swap(&arr[l], &arr[i]); // 回溯操作
}
}
}
// 交换两个元素的函数
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int numbers[] = {1, 2, 3, 4};
int n = sizeof(numbers) / sizeof(numbers[0]);
permute(numbers, 0, n - 3); // 我们只考虑前三项的排列
return 0;
}
```
当你运行此程序,它将输出所有由数字1, 2, 3和4组成的不同排列,每个排列占一行。
阅读全文