(回溯法:子集)leetcode78子集
//题目放到编译器写,把题目问题分解成子问题,写一个功能执行一次,最后总合起来执行
//回溯法写草稿纸,写执行过程
固定长度的"组合"可以看作"子集"的子集
将for的i=index dfs(i+1,......)完成子集。
每调用一次放一次combine到ans里
直到index超过了nums.size()的长度。
class Solution {
vector<int> combine;
vector<vector<int>> ans;
void dfs(int index, vector<int>& nums) {
ans.push_back(combine);
if (index >= nums.size())
return;
for (int i = index;i < nums.size();i++)
{
combine.push_back(nums[i]);
dfs(i+1,nums);
combine.pop_back();
}
}
public:
vector<vector<int>> subsets(vector<int>& nums) {
dfs(0,nums);
return ans;
}
};
原文地址:https://blog.csdn.net/2403_87140725/article/details/144437314
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!