Leetcode39. Combination Sum
来源:互联网 发布:平安淘宝信用卡 编辑:程序博客网 时间:2024/06/09 18:05
Leetcode39. Combination Sum
题目:Given a set of candidate numbers (C) (without duplicates) 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.
- 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]]
题意分析:这道题,选择用回溯的方法去做。采用的方法也是类似背包问题,先假设放进去,不行再取出来。
void combinationSum(std::vector<int> &candidates, int target, std::vector<std::vector<int> > &res, std::vector<int> &combination, int begin) {if (!target) {res.push_back(combination);return;}for (int i = begin; i != candidates.size() && target >= candidates[i]; ++i) {combination.push_back(candidates[i]);combinationSum(candidates, target - candidates[i], res, combination, i);combination.pop_back();}}
代码:
class Solution {public:std::vector<std::vector<int> > combinationSum(std::vector<int> &candidates, int target) {std::sort(candidates.begin(), candidates.end());std::vector<std::vector<int> > res;std::vector<int> combination;combinationSum(candidates, target, res, combination, 0);return res;}private:void combinationSum(std::vector<int> &candidates, int target, std::vector<std::vector<int> > &res, std::vector<int> &combination, int begin) {if (!target) {res.push_back(combination);return;}for (int i = begin; i != candidates.size() && target >= candidates[i]; ++i) {combination.push_back(candidates[i]);combinationSum(candidates, target - candidates[i], res, combination, i);combination.pop_back();}}};
阅读全文
0 0
- [LeetCode39]Combination Sum
- LeetCode39:Combination Sum
- Leetcode39 Combination Sum
- leetcode39 Combination Sum
- leetcode39 Combination Sum
- LeetCode39. Combination Sum
- Leetcode39:Combination Sum
- leetcode39. Combination Sum
- leetcode39. Combination Sum
- LeetCode39 Combination Sum
- leetcode39. Combination Sum
- Leetcode39. Combination Sum
- (LeetCode39)Combination Sum
- LeetCode39——Combination Sum
- [LeetCode39]Combination Sum 和[LeetCode40]Combination Sum II
- leetcode39和40 java实现 Combination Sum和Combination Sum II
- leetcode39&40_Combination Sum& CombinationSumII
- LeetCode39
- 内存相关
- python 的日志logging模块学习
- 使用hql
- POJ 2390 Bank Interest
- java 窗口点击事件
- Leetcode39. Combination Sum
- Windows映射linux磁盘驱动器
- setInc一直返回0
- caffe配置 windows gpu
- reactNative开发中react-navigation三种使用情况案例
- hdu-1234-开门人关门人(结构体)
- java责任链模式及项目实际运用
- Word 2016使用技巧
- Python定时利用QQ邮件发送天气预报