class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<vector<int>> res;
sort(nums.begin(),nums.end());
vector<int> temp;
f(0,res,nums,temp);
return res;
}
void f(int n,vector<vector<int>>&res,vector<int>&nums,vector<int>&temp)
{
res.push_back(temp);
for(int i=n;i<nums.size();i++)
{
if(i>n&nums[i]==nums[i-1])//一开始漏了考虑i>n这个条件
continue;
temp.push_back(nums[i]);
f(i+1,res,nums,temp);
temp.pop_back();
}
}
};