欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode 39. 组合总和

程序员文章站 2024-01-22 11:11:04
...

前言

在做39题发现个有意思的事情,对于重复的排列数 去重问题

通过对i的限制,可以防止i在递归时重新赋值为0

思路

1.全排列输出组合

2.通过自减作为终止条件

3.for循环为试探的数

4.运用参数i去重

去重前

leetcode 39. 组合总和

标准答案。

class Solution {
public:
    vector<vector<int>> res;
    vector<int> path;
    void dfs(vector<int>& candidates, int target,int num)
    {
        if(target<0)
        {
            return;
        }
        if(target==0)
        {
            res.push_back(path);
        }
        for(int i=num;i<candidates.size();i++)
        {
            path.push_back(candidates[i]);
            dfs(candidates,target-candidates[i],i);
            path.pop_back();
        }
    }
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        if(candidates.size()==0)
            return res;
        dfs(candidates,target,0);
        return res;
    }
};