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;
};
本文深入探讨了排序算法及其在递归过程中的应用,通过实例代码展示了如何使用递归实现排序,并强调了记录当前位置的重要性。文章还介绍了如何通过优化遍历过程来提高效率。
632

被折叠的 条评论
为什么被折叠?



