回溯算法----子集

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

示例:

输入: nums = [1,2,3]
输出:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

解答(C++):
class Solution {
public:
    vector<vector<int>> vec;
    void backTrace(vector<int>& nums, vector<int> item, int pos) {
        vec.push_back(item);
        for (int i = pos; i < nums.size(); ++i) {
            item.push_back(nums[i]);
            backTrace(nums, item,i+1);
            item.pop_back();
        }
    }
    
    vector<vector<int>> subsets(vector<int>& nums) {
        backTrace(nums, {}, 0);
        return vec;
    }
};

猜你喜欢

转载自www.cnblogs.com/vczf/p/12610548.html