permutation2
1 class Solution { 2 public: 3 vector<vector<int> > permuteUnique(vector<int> &num) { 4 // Start typing your C/C++ solution below 5 // DO NOT write int main() function 6 vector<vector<int> > vec; 7 if( num.empty() ) return vec; 8 9 sort( num.begin(),num.end() ); 10 vector<int> tmp; 11 vector<bool> flag ( num.size(), true ); 12 getPermute( vec, tmp, num , flag ); 13 return vec; 14 15 } 16 void getPermute(vector<vector<int> >& vec,vector<int>& tmp, vector<int> &num,vector<bool>& flag) 17 { 18 if( tmp.size() == num.size() ) 19 { 20 vec.push_back( tmp ); 21 return; 22 } 23 for(int i=0;i< flag.size();i++) 24 { 25 if( !flag[i] ) 26 continue; 27 tmp.push_back( num[i] ); 28 flag[i] = false; 29 getPermute( vec, tmp, num , flag ); 30 flag[i] = true; 31 tmp.pop_back(); 32 while( i+1<flag.size() && num[i] == num[i+1] ) i++; 33 } 34 35 } 36 37 };
posted on 2013-09-04 16:08 jumping_grass 阅读(156) 评论(0) 收藏 举报
浙公网安备 33010602011771号