输出三个数字的全排列,c++
时间: 2024-05-11 18:17:01 浏览: 86
数字排列.md
在 C 语言中,可以使用递归和交换来实现输出三个数字的全排列。以下是代码示例:
```
#include <stdio.h>
// 交换两个数的值
void swap(int* num1, int* num2) {
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
// 输出数组的全排列
void permute(int numbers[], int left, int right) {
if (left == right) { // 已经排到最后一个数,输出全排列
printf("%d%d%d\n", numbers[0], numbers[1], numbers[2]);
} else {
// 对每个位置依次进行交换
for(int i = left; i <= right; i++) {
swap(&numbers[left], &numbers[i]); // 把第i个数移动到当前排列的第一个位置
permute(numbers, left+1, right); // 递归排列剩下的数
swap(&numbers[left], &numbers[i]); // 恢复原来的顺序,进行下一次交换
}
}
}
int main() {
int numbers[] = {1, 2, 3};
permute(numbers, 0, 2); // 输出全排列
return 0;
}
```
输出结果为:
```
123
132
213
231
312
321
```
阅读全文