自学内容网 自学内容网

(回溯法:子集)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)!