zoukankan      html  css  js  c++  java
  • #leetcode刷题之路39-组合总和

    给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
    candidates 中的数字可以无限制重复被选取。
    说明:
    所有数字(包括 target)都是正整数。
    解集不能包含重复的组合。

    示例 1:
    输入: candidates = [2,3,6,7], target = 7,
    所求解集为:
    [
    [7],
    [2,2,3]
    ]

    示例 2:
    输入: candidates = [2,3,5], target = 8,
    所求解集为:
    [
    [2,2,2,2],
    [2,3,3],
    [3,5]
    ]

    #include <iostream>
    #include <vector>
    using  namespace std;
    static int i=0;
    
    void recurrent(vector<int>& candidates,int target,int addr,vector<vector<int>>& ans,vector<int>& temp)//addr为当前遍历到的位置,
    {
        if(target==0)
        {
            //cout<<temp.size()<<endl;
            ans.push_back(temp);
            return;
        }
        if(target<0) return;
        for(int i=addr;i<candidates.size();i++)
        {
            target-=candidates[i];
            temp.push_back(candidates[i]);
            recurrent(candidates,target,i,ans,temp);
            temp.pop_back();//还原,以继续遍历
            target+=candidates[i];
        }
    }
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        vector<vector<int>> ans;
        int count=candidates.size();
        if(count==0||target<0) return ans;
        vector<int> temp;
        recurrent(candidates,target,0,ans,temp);
        return ans;
    }
    
    int main() {
        vector<int> candidates={1};
        vector<vector<int>> ans=combinationSum(candidates,2);
        std::cout << ans.size()<< std::endl;
        return 0;
    }
  • 相关阅读:
    使用PWS调试cgi,php
    解决联想电脑常见故障及内存不足的几种方法
    How Many Tables (并查集)
    Prim
    小希的迷宫(并查集)
    并查集
    Is It A Tree?(并查集)
    hdu 1003 Max Sum(最大子窜和)
    More is better(并查集)
    01背包精讲
  • 原文地址:https://www.cnblogs.com/biat/p/10601999.html
Copyright © 2011-2022 走看看