思路:DFS,对于每个元素,有选择当前元素和不选当前元素两种方案。
class Solution {
private:
vector<vector<int>> res;
vector<int> tmp;
public:
vector<vector<int>> subsets(vector<int>& nums) {
dfs(0, nums);
return res;
}
//u表示当前遍历到nums中的第u个元素
void dfs(int u, vector<int>& nums)
{
if (u == nums.size())
{
res.push_back(tmp);
return;
}
//对于每个元素,有选择当前元素和不选当前元素两种方案
tmp.push_back(nums[u]); //选择当前元素
dfs(u + 1, nums);
tmp.pop_back(); //不选当前元素
dfs(u + 1, nums);
}
};