`

Combination Sum(c++实现)

 
阅读更多

Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

The same repeated number may be chosen from C unlimited number of times.

Note:

  • All numbers (including target) will be positive integers.
  • Elements in a combination (a1a2, � , ak) must be in non-descending order. (ie, a1 ? a2 ? � ? ak).
  • The solution set must not contain duplicate combinations.

 

For example, given candidate set 2,3,6,7 and target 7
A solution set is: 
[7] 
[2, 2, 3] 

 

class Solution {
public:
    vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
        vector<vector<int> > ret;
        if(candidates.size() <= 0) return ret;
        if(target <= 0) return ret;
        sort(candidates.begin(), candidates.end());
        vector<int> tmp;
        iter(candidates, target, 0, tmp, ret);
        return ret;
    }
    
    void iter(vector<int> &candidates, int target, int beg, vector<int> tmp, vector<vector<int> > &ret) {
        if(target == 0) {
            ret.push_back(tmp);
            return;
        }
        
        if(target > 0) {
            for(int i = beg; i < candidates.size(); ++i) {
                tmp.push_back(candidates[i]);
                iter(candidates, target-candidates[i], i, tmp, ret);
                tmp.pop_back();
            }
        }
    }
};

 

欢迎关注微信公众号——计算机视觉:

 

0
2
分享到:
评论

相关推荐

    c++-c++编程基础之leetcode题解第40题组合总和II.zip

    在主函数`combinationSum2`中,我们先对输入的`candidates`进行排序,然后调用`backtrack`函数开始搜索过程。最终返回的结果集`res`包含了所有满足条件的组合。 通过以上代码,我们可以解决LeetCode第40题...

    c++-c++编程基础之leetcode题解第39题组合总和.zip

    vector&lt;vector&lt;int&gt;&gt; combinationSum(vector&lt;int&gt;& candidates, int target) { vector&lt;vector&lt;int&gt;&gt; result; vector&lt;int&gt; current; backtrack(candidates, target, result, current, 0); return result; } void...

    手稿_V1.088

    代码首先定义了一个名为`Solution`的类,其中有两个方法:`bit1Count`和`combinationSum3`。`bit1Count`方法用于计算一个无符号整数中二进制形式的1的个数,而`combinationSum3`是解决该问题的主要方法。 在`bit1...

    C++共享36题

    根据给定的信息,我们可以从标题、...以上仅为部分内容的解析,完整的36题可能包含了更广泛和深入的C++编程知识点,包括但不限于算法实现、数据结构操作等。这些示例代码仅作为参考,具体的实现细节可能会有所不同。

    SudokuSum_C++Builder_

    在描述中提到,"a program for find combination of N Number to reach a Sum. this solve sudoku puzzle." 这意味着它不只是一个简单的求和工具,而是与数独游戏相结合。数独是一种逻辑游戏,玩家需要在一个9x9的...

    手稿_V1.015

    最后,`combinationSum2`是对外的公共接口,它初始化结果向量`vvi`,并调用`helper`函数开始搜索过程。 总的来说,这个手稿展示了如何使用C++实现一个基于回溯和剪枝的解决方案,来解决组合问题。通过理解这个示例...

    手稿_V1.014

    在代码中,定义了一个名为 `Solution` 的类,包含一个私有函数 `helper` 和一个公共函数 `combinationSum`。`helper` 函数是回溯的主要实现,它接受以下参数: - `vvi`:存储所有有效组合的二维向量。 - `...

    leetcode:leetcode练习

    - 递归是解决回溯问题的关键,例如“N皇后”(N-Queens)和“组合总和”(Combination Sum)。C++的递归函数设计简洁,但需要注意堆栈溢出的问题。 - 动态规划如“背包问题”(Knapsack Problem)和“最长公共子...

    數位之和leetcode-leetcode-cpp:我的LeetCodeC++答案

    C++ 答案库。 我的 LeetCode 个人资料: 如果你想讨论,请加入QQ群: 其他语言 优先级从高到低排列。 一句话总结问题 命名规则 number-this_is_title-difficulty (e-easy, m-medium, h-hard) “NEED O”和“TODO”...

    LeetCode-js:用 JavaScript 解决 LeetCode 问题

    4. **回溯**:回溯是一种解决约束满足问题的算法,常用于“组合总和”(Combination Sum)、“N 皇后问题”(N-Queens)等。JavaScript 中回溯算法往往结合递归来实现。 5. **动态规划**:动态规划是解决优化问题的...

    leetcode答案-CodeBase:基本算法问题

    5. 回溯法:在解决如“N-Queens”(八皇后问题)或“Combination Sum”(组合总和)等问题时,回溯法是一种有效的策略。 三、编程语言应用 CodeBase项目支持多种编程语言,包括但不限于Java、Python、C++和...

    C语言基础训练

    int combination(int m, int n) { return factorial(m) / (factorial(n) * factorial(m - n)); } ``` #### 3.3 集合操作 文档最后部分讨论了集合的交集、并集、差集等操作,这对于学习如何处理数据结构非常有用...

    全面的算法代码库

      这里有各种算法的C++代码,任何人可以在自己的任何程序中使用,欢迎大家指出代码中的错误以及有待改进的地方。   本仓库内所有代码的授权方式为Unlicense,大家如果使用我的代码开发自己的软件挣了大钱,或是...

    ehlib_vcl_src_9_3.26

    Delphi/C++ Builder IDE. The program creates folders to keep EhLib binary and other requared files, copies requared files to created folders, compiles packages, register packages in IDE and write ...

    UE(官方下载)

    You can use a combination of a script and tool to create a single file from multiple files. Sum Column/Selection in Column Mode This power tip demonstrates how to calculate the sum from a column of ...

Global site tag (gtag.js) - Google Analytics