题目链接:https://leetcode.com/problems/subsets/#/description
意思就是给定一个数组,输出它的所有子集(空集也包括)
解题方法: 使用回溯法,利用递归来实现。代码如下:
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int> > result;
vector<int> temp;
result.push_back(temp); //把空集放入结果中
for(int length =1; length<= nums.size(); length++){ //子集长度从1开始到size
subsetsAssist(nums, 0, length, temp, result);
}
return result;
}
void subsetsAssist(vector<int> &nums, int index, int length, vector<int> &temp, vector<vector<int> > &result){
for(int i =index; i< nums.size(); i++){
temp.push_back(nums[i]);
if(temp.size() == length) result.push_back(temp);
else subsetsAssist(nums, i+1, length, temp, result);
temp.pop_back();
}
}
};