全排列 給定一個沒有重複數字的序列,返回其所有可能的全排列。
阿新 • • 發佈:2018-11-30
比較經典的回溯演算法,用了之後記得要標記出來。標記後下一輪記得重置
class Solution { public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> res; if(nums.empty()) return res; int n=nums.size(); vector<int> out; bool *used=new bool[n]; memset(used,0,n); shengcheng(res,nums,out,used,n); delete[] used; return res; } void shengcheng(vector<vector<int>>&res,vector<int>& nums,vector<int>&out,bool *used,int total) { if(out.size()==total) { res.push_back(out); //out.pop_back(); } for(int i=0;i<total;++i) { if(!used[i]) { out.push_back(nums[i]); used[i]=true; shengcheng(res,nums,out,used,total); used[i]=false; out.pop_back(); } } } };