您的位置:首页 > 职场人生

Leetcode Subsets

2013-12-05 18:00 260 查看
dfs again!

记得先排序,同时还要记录当前所在的位置,递归的下一层直接从这个位置开始遍历。

class Solution {
public:
vector<vector<int> > subsets(vector<int> &S) {
ans.clear();
ans.push_back(v);
sort(S.begin(), S.end());
for(int i = 1; i <= S.size(); i++){
v.clear();
dfs(S, 0, 0, i);
}
return ans;
}
void dfs(vector<int> &S, int index, int cnt, int sum){
if(cnt == sum){
ans.push_back(v);
return ;
}
for(int i = index; i < S.size(); i++){
v.push_back(S[i]);
dfs(S, i+1, cnt+1, sum);
v.pop_back();
}
}
vector<int> v;
vector<vector<int> > ans;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OJ leetcode 面试