LeetCode78. 子集

题目大意:求一个集合的子集

题目分析:对于集合中的每一种情况,都有两种可能性,要么取,要么不取。我们可以利用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;
    }
};

猜你喜欢

转载自blog.csdn.net/jaster_wisdom/article/details/80903113