题解
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;
}
};

本文介绍了一种使用深度优先搜索(DFS)结合剪枝策略来寻找数组子集的算法。通过递归地遍历数组,当选择次数等于数组长度时停止,避免了不必要的重复。代码示例展示了如何在C++中实现该方法并返回所有可能的子集。
422

被折叠的 条评论
为什么被折叠?



