LeetCode *** 39. Combination Sum

来源:互联网 发布:ns为线性电阻网络 编辑:程序博客网 时间:2024/05/05 19:18

题目:

Given a set of candidate numbers (C) and a target number (T), find all unique combinations inC 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 (a1,a2, … , ak) must be in non-descending order. (ie,a1a2 ≤ … ≤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:    int tg;    vector<vector<int>> res;    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {                sort(candidates.begin(),candidates.end());        tg=target;        vector<int>tmp;        dfs(candidates,tmp,0,0);        return res;            }        void dfs(vector<int>& nums,vector<int> tmp,int start,int sum){        int s;        for(int i=start;i<nums.size();i++){            s=sum+nums[i];            if(s<tg){                tmp.push_back(nums[i]);                dfs(nums,tmp,i,s);                tmp.erase(tmp.end()-1);            }else if(s==tg){                tmp.push_back(nums[i]);                res.push_back(tmp);                tmp.erase(tmp.end()-1);            }        }            }};

0 0