问题:
给定一个含不同整数的集合,返回其所有的子集
思路:
在组合(一)分析的基础上,这个问题只是求包含不同元素数量的子集合而已。
//递归执行具体的查找工作
void execFind(vector<vector<int>> &result, vector<int> nums, vector<int> cur, int leftnum, int index){
if(leftnum == 0){
result.push_back(cur);
return;
}
if(leftnum > nums.size() - index){
return;
}
for(int i = index; i < nums.size(); i++){
cur.push_back(nums[i]);
execFind(result, nums, cur, leftnum - 1, i + 1);
cur.pop_back();
}
}
vector<vector<int> > subsets(vector<int> &nums) {
// write your code here
vector<vector<int>> result;
//将空元素放入结果集中
vector<int> cur;
result.push_back(cur);
int size = nums.size();
if(size < 1)
return result;
//依次查找不同长度的字数组
for(int i = 1; i <= size; i++){
cur.clear();
execFind(result, nums, cur, i, 0);
}
return result;
}