//DFS,要改变temp和result的值,所以要用到&
//每次循环最后要pop出最后一个元素
class Solution {
private:vector<int>temp;
vector<vector<int>>result;
void sub_set(vector<int> S, vector<int>&temp, vector<vector<int>>&result,int index)
{
result.push_back(temp);
for(int i=index;i<S.size();i++)
{
if(i!=index&&S[i]==S[i-1])
continue;
temp.push_back(S[i]);
sub_set(S,temp,result,i+1);
temp.pop_back();
}
}
public:
vector<vector<int> > subsetsWithDup(vector<int> &S) {
result.clear();
if(S.size()<=0)
return result;
sort(S.begin(),S.end());
sub_set(S,temp,result,0);
return result;
}
};