class Solution {
public:
vector<vector<int> > subsetsWithDup(vector<int> &S) {
vector<vector<int>> res;
vector<int> cur;
res.push_back(cur);
sort(S.begin(),S.end());
dfs(res,0,S.size(),S,cur);
return res;
}
void dfs(vector<vector<int>> &res,int pos,int mx,vector<int> a,vector<int> &cur){
if(pos==mx) return; //无法继续扩展
cur.push_back(a[pos]);
auto it = find(res.begin(),res.end(),cur);
if(it==res.end())
res.push_back(cur);
dfs(res,pos+1,mx,a,cur); //当前的加入
cur.pop_back();
auto it1 = find(res.begin(),res.end(),cur);
if(it1==res.end())
res.push_back(cur);
dfs(res,pos+1,mx,a,cur); //当前的不加入
}
};
LeetCode subset-2 dfs 不重复的组合生成问题
最新推荐文章于 2021-10-17 19:55:17 发布