您的位置:首页 > 其它

LeetCode 40. Combination Sum II

2016-04-12 15:16 423 查看
深度搜索,路径记录

class Solution {
public:
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
sort(candidates.begin(),candidates.end());
copy(candidates.begin(),candidates.end(),back_inserter(nums));
this->target = target;
vector<int> vec;
use.resize(candidates.size());
dfs(-1,0,vec);
return ret;
}
private:
vector<int> use;
vector<int> nums;
vector<vector<int>> ret;
int target;
void dfs(int last,int sum,vector<int>& vec)
{
for(int i = last+1;i<nums.size();i++)
{
if(use[i] == 0)
{
if((sum+nums[i]) == target){
vec.push_back(nums[i]);
if(find(ret.begin(),ret.end(),vec) == ret.end())
ret.push_back(vec);
vec.pop_back();
}
else if((sum+nums[i]) > target)
return ;
else {
use[i] = 1;
vec.push_back(nums[i]);
dfs(i,sum+nums[i],vec);
vec.pop_back();
use[i] = 0;
}
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: