la leetcode suma combinada

1. recursiva retroceso +

En primer lugar, hay tres cosas que debe recordar con claridad:

1) no hay repetición de elementos en el array

2) una matriz digital puede ser repetido selección ilimitada

3) conjunto de soluciones no puede contener combinaciones duplicadas

Código es el siguiente:

class Solution {
    vector<vector<int>> res;
public:
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
         //递归+回溯
         vector<int> ans;
         getSum(candidates,ans,0,target);
        return res;
    }
    void getSum(vector<int>&c,vector<int> &ans,int index,int target)
    {
        if(target==0)
        {
              res.push_back(ans);
              return ;
        }
        if(target<0)
        {
            return ;
        }
        for(int i=index;i<c.size();i++)
        {
            ans.push_back(c[i]);
            getSum(c,ans,i,target-c[i]);
            ans.pop_back();
        }
    }
};

 

Ha publicado 190 artículos originales · alabanza 3 Ganador · vistas 20000 +

Supongo que te gusta

Origin blog.csdn.net/qq_38196982/article/details/104902846
Recomendado
Clasificación