# 子集

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

 

示例 1:

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

示例 2:

输入:nums = [0]
输出:
[[],[0]]

 

提示:

以下程序实现了这一功能,请你填补空白处内容: ```cpp #include using namespace std; class Solution { public: vector> subsets(vector &nums) { vector> res; dfs(nums, 0, res); return res; } private: vector stack; void dfs(vector &nums, int start, vector> &res) { res.push_back(stack); for (int i = start; i < nums.size(); i++) { ______________; } } }; ``` ## template ```cpp #include using namespace std; class Solution { public: vector> subsets(vector &nums) { vector> res; dfs(nums, 0, res); return res; } private: vector stack; void dfs(vector &nums, int start, vector> &res) { res.push_back(stack); for (int i = start; i < nums.size(); i++) { stack.push_back(nums[i]); dfs(nums, i + 1, res); stack.pop_back(); } } }; ``` ## 答案 ```cpp stack.push_back(nums[i]); dfs(nums, i + 1, res); stack.pop_back(); ``` ## 选项 ### A ```cpp stack.push_back(nums[i]); dfs(nums, i, res); stack.pop_back(); ``` ### B ```cpp stack.push_back(nums[i]); dfs(nums, i + 1, res); ``` ### C ```cpp stack.push_back(nums[i]); dfs(nums, i - 1, res); ```