示例#1
0
 vector<vector<int>> permute(vector<int>& nums) {
     vector <vector<int>> result;
     if(nums.size() == 0)
         return result;
     permute_helper(0,nums,result);
     return result;
 }
示例#2
0
 void permute_helper(int begin,vector<int> &num,vector<vector<int>> &result){
     if(begin >= num.size()){
         result.push_back(num);
         return;
     }
     for(int i = begin;i < num.size();i++){
         swap(num[i],num[begin]);
         permute_helper(begin+1,num,result);
         swap(num[i],num[begin]);
     }
 }
示例#3
0
 vector<vector<int> > permute_helper(vector<int> &num, int n){
     vector<vector<int> > result;
     if(n==0)
         return result;
     if(n==1){
         vector<int> t;
         t.push_back(num[0]);
         result.push_back(t);
         return result;
     }
     vector<vector<int> > pre_result = permute_helper(num, n-1);
     std::vector<int>::iterator it;
     for(int i=0;i<pre_result.size();i++){
         for(int j=0;j<=pre_result[i].size();j++){
             vector<int> t;
             t = pre_result[i];
             it = t.begin();
             t.insert(it+j, num[n-1]);
             result.push_back(t);
         }
     }
 }
示例#4
0
 vector<vector<int> > permute(vector<int> &num) {
     return permute_helper(num, num.size());
 }