class Solution {
public:
vector<int> temp;
vector<vector<int>> result;
void backtracking(int startindex,vector<int>& nums)
{
//单层搜索逻辑
for(int i=startindex;i<nums.size();i++)
{
//递归结束条件
if(temp.end()==nullptr)
{
result.push_back(temp);
result.push_back(nums);
return result;
}
temp.push_back(nums[i]);
backtracking(i+1,nums);
temp.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
backtracking(0,nums);
}
};
深度应该控制nums的长度:
class Solution {
public:
vector<int> temp;
vector<vector<int>> result;
void backtracking(int startindex,vector<int>& nums,vector<int> temp)
{
//递归结束条件
result.push_back(temp);
//单层搜索逻辑
for(int i=startindex;i<nums.size();i++)
{
temp.push_back(nums[i]);
backtracking(i+1,nums,temp);
temp.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
backtracking(0,nums,temp);
return result;
}
};