1. 题目
2. 算法
http://www.cnblogs.com/grandyang/p/4419386.html
- DFS:O(n!)
3. 代码
class Solution{
public:
vector<vector<int> > combinationSum(vector<int>& candidates,int target){
vector<vector<int> > res;
vector<int> out;
sort(candidates.begin(),candidates.end());
combinationDFS(candidates,target,0,out,res);
return res;
}
private:
void combinationDFS(vector<int>& candidates,int target,int start,vector<int>& out,vector<vector<int> >& res){
if(target<0) return ;
else if(target==0) res.push_back(out);
else{
for(int i=start;i<candidates.size();++i){
if(i>start && candidates[i]==candidates[i-1]) continue;
out.push_back(candidates[i]);
combinationDFS(candidates,target-candidates[i],i+1,out,res);
out.pop_back();
}
}
}
};