亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c++全排列的遞歸算法怎么實現

c++
小億
91
2023-09-28 11:06:57
欄目: 編程語言

下面是C++中全排列的遞歸算法的實現:

#include <iostream>
#include <vector>
using namespace std;
// 交換兩個元素的位置
void swap(vector<int>& nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
// 遞歸生成全排列
void permuteHelper(vector<int>& nums, int begin, vector<vector<int>>& result) {
if (begin == nums.size()) {
result.push_back(nums);
return;
}
for (int i = begin; i < nums.size(); i++) {
swap(nums, begin, i);
permuteHelper(nums, begin + 1, result);
swap(nums, begin, i);  // 恢復原來的位置,以便進行下一次交換
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> result;
permuteHelper(nums, 0, result);
return result;
}
int main() {
vector<int> nums = {1, 2, 3};
vector<vector<int>> result = permute(nums);
for (vector<int>& permutation : result) {
for (int num : permutation) {
cout << num << " ";
}
cout << endl;
}
return 0;
}

該算法通過遞歸實現全排列。首先,定義一個permuteHelper函數,該函數用于生成從指定位置開始的全排列。在遍歷過程中,將當前位置的元素與后面的元素逐個交換,并繼續遞歸生成全排列。當遍歷到最后一個位置時,將當前排列添加到結果中。

在主函數中,定義一個測試用例nums,然后調用permute函數生成全排列,并打印結果。

0
平泉县| 龙海市| 南丰县| 富裕县| 郧西县| 陵川县| 永平县| 鱼台县| 平顺县| 洪雅县| 巨鹿县| 邻水| 静宁县| 中牟县| 克拉玛依市| 金门县| 延津县| 汉沽区| 韶山市| 化隆| 靖宇县| 红河县| 延边| 建湖县| 清新县| 衡水市| 疏附县| 开阳县| 潢川县| 齐齐哈尔市| 固阳县| 两当县| 友谊县| 淅川县| 张掖市| 淮滨县| 惠水县| 明星| 浠水县| 青海省| 汾阳市|