LeetCode 演算法46 全排列
題目
給定一個不含重復數字的陣列 nums ,回傳其 所有可能的全排列 ,你可以 按任意順序 回傳答案,

重點是for回圈里面的書寫內容,交換位置,比較巧妙
解題思路 回溯法

class Solution {
public:
void trackback(vector<int>& nums, vector<vector<int>>& combinations, int index){
if(index == nums.size()){
combinations.push_back(nums);
return;
}
else{
for (int i = index; i < nums.size(); ++i) {
// 動態維護陣列
swap(nums[i], nums[index]);
// 繼續遞回填下一個數
trackback(nums, combinations, index+1);
// 撤銷操作
swap(nums[i], nums[index]);
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<int> combination;
vector<vector<int>> combinations;
int index =0;
trackback(nums, combinations, index);
return combinations;
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287015.html
標籤:其他
上一篇:PHP 打開檔案,寫入檔案內容fopen,feof,fgets
下一篇:深入了解一些字串函式,記憶體函式
