首页 > 其他 > 详细

39. Combination Sum

时间:2016-09-09 18:22:46      阅读:164      评论:0      收藏:0      [点我收藏+]

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.
  • 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]
]
采用深度优先搜索的思想,对于输入candidates=[1,2] ,target=3,遍历的方向如图: 

技术分享


 1 #include "stdafx.h"
 2 
 3 #include <iostream>
 4 #include <vector>
 5 #include <algorithm>
 6 
 7 using namespace std;
 8 void helper(int pos, int base, int target, vector<int>& candidates, vector<int>& path, vector<vector<int> >& result)
 9 {
10     if (base > target)
11         return;
12     if (base == target)
13     {
14         result.push_back(path);
15         return;
16     }
17     for (int i = pos; i < candidates.size(); ++i)
18     {
19         path.push_back(candidates[i]);
20         helper(i, base + candidates[i], target, candidates, path, result);
21         path.pop_back();
22     }
23 
24 }
25 vector<vector<int> > combinationSum(vector<int>& candidates, int target)
26 {
27     vector<vector<int> > result;
28     vector<int> path;
29     sort(candidates.begin(), candidates.end());
30     vector<int>::iterator it = unique(candidates.begin(),candidates.end());
31     candidates.erase(it, candidates.end());
32     helper(0, 0, target, candidates, path, result);
33     return result;
34 }
35 int main()
36 {
37     vector<vector<int> > result;
38     vector<int> candidates;
39     candidates.push_back(2);
40     candidates.push_back(2);
41     candidates.push_back(3);
42     candidates.push_back(7);
43     int target = 7;
44     result = combinationSum(candidates, target);
45 
46     return 0;
47 }

 

39. Combination Sum

原文:http://www.cnblogs.com/hhboboy/p/5857345.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!