用c++实现四个数的全排列,用深度优先搜索
时间: 2024-10-29 19:12:10 浏览: 13
在C++中,我们可以使用深度优先搜索(Depth First Search,DFS)算法来生成四个数的所有全排列。这里是一个简单的递归方法实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void permute(vector<int>& nums, int start = 0) {
if (start == nums.size()) { // 当前序列已经完整,打印结果
for (int num : nums)
cout << num << " ";
cout << endl;
} else {
// 对于剩余未选择的每个数字,做一次递归操作
for (int i = start; i < nums.size(); ++i) {
swap(nums[start], nums[i]); // 尝试交换当前位置的数字
permute(nums, start + 1); // 继续递归,处理剩余元素
swap(nums[start], nums[i]); // 回溯,恢复原状态
}
}
}
int main() {
vector<int> nums = {1, 2, 3, 4};
permute(nums);
return 0;
}
```
这个程序会生成所有可能的四个数的排列组合,并以行的形式显示出来。`permute`函数接受一个整数向量和起始位置作为输入,通过深度优先搜索遍历所有可能的排列。
阅读全文