题目大意:求一个集合的子集
题目分析:对于集合中的每一种情况,都有两种可能性,要么取,要么不取。我们可以利用DFS+回溯解决。
代码展示:
class Solution {
public:
void dfs(vector<int> nums,int pos,vector<int> path,vector<vector<int>>& result){
if(nums.size()==pos)
return;
for(int i=pos;i<nums.size();i++){
path.push_back(nums[i]);
result.push_back(path);
dfs(nums,i+1,path,result);
path.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> result;
vector<int> path;
sort(nums.begin(),nums.end());
result.push_back(path);
dfs(nums,0,path,result);
return result;
}
};