题解
dfs+ 剪枝?
回溯
从当前位置开始搜索,有两种选择,要 或者 不要 当选择的次数和数组的次数相同的时候就是递归终止的条件。
代码
class Solution {
public:
vector<int>t;
vector<vector<int>> ans;
//dfs + 剪枝
void dfs(int cur, vector<int>&nums){
//递归结束条件
if(cur == nums.size()){
ans.push_back(t);
return;
}
t.push_back(nums[cur]);
dfs(cur + 1, nums);
t.pop_back();
dfs(cur + 1, nums);
}
vector<vector<int>> subsets(vector<int>& nums) {
dfs(0,nums);
return ans;
}
};