https://leetcode-cn.com/problems/subsets-ii/
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
思路,增量构造,集合去重。
class Solution {
public:
int A[10000];
vector<vector<int>> res;
set<vector<int>> iset;
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n=nums.size();
print(n,nums,0,0);
return res;
}
void print(int n,vector<int>& nums,int cur,int dex)
{
vector<int> t(A,A+cur);
if(!iset.count(t))
{
res.push_back(t);
iset.insert(t);
}
for(int i=dex;i<n;i++)
{
A[cur]=nums[i];
print(n,nums,cur+1,i+1);
}
}
};