Combination Sum

来源:互联网 发布:搞笑的网络剧 编辑:程序博客网 时间:2024/05/01 01:17

Combination SumMar 7 '12

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.


回溯,通过搜索下标不小于当前下标来控制重复。

class Solution {public:    vector<vector<int> > combinationSum(vector<int> &candidates, int target) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        vector<vector<int>> ret;          vector<int> temp;        sort(candidates.begin(),candidates.end());        calSum(candidates,temp,ret,target,0);        return ret;    }        void calSum(vector<int> &candidates,vector<int> &temp,vector<vector<int>> &ret,int target,int j)    {        if(target == 0) {            ret.push_back(temp);            return;        }        for(int i = j;i < candidates.size();i++)        {            if(candidates[i] <= target){                temp.push_back(candidates[i]);                calSum(candidates,temp,ret,target-candidates[i],i);                temp.pop_back();            }          }    }};

64 milli secs