78. 子集(dfs)(LeetCode)
二进制
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
int n = nums.size();
vector<vector<int>> ans;
for(int i = 0; i < 1 << n; ++i){
vector<int> path;
for(int j = 0; j < n; ++j){
if(i >> j & 1) path.push_back(nums[j]);
}
ans.push_back(path);
}
return ans;
}
void dfs(int n, int k, int st){
}
};
递归
class Solution {
public:
vector<int> path;
vector<vector<int>> ans;
void dfs(vector<int>& nums, int st){
if(st == nums.size()){
ans.push_back(path);
return;
}
path.push_back(nums[st]);
dfs(nums, st + 1);
path.pop_back();
dfs(nums, st + 1);
}
vector<vector<int>> subsets(vector<int>& nums) {
dfs(nums, 0);
return ans;
}
void dfs(int n, int k, int st){
}
};

浙公网安备 33010602011771号