C++代码回溯算法思路,因为比较通用,本质上子集问题就是遍历这样用一棵回溯树,经典dfs.
class Solution {
public:
int n;
vector path;
vector> res;
vector> subsets(vector& nums) {
n = nums.size();
dfs(nums, 0);
return res;
}
void dfs(vector&nums, int u) {
if(u == n) {
res.push_back(path);
return;
}
//不选
dfs(nums, u + 1);
//选
path.push_back(nums[u]);
dfs(nums, u + 1);
path.pop_back(); //回溯
}
};



