题目描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d2971c8ee30a4d4d018e5baf318022e0.png)
代码
class Solution {
public:
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
vector<vector<int>> ans;
vector<int> tmp;
sort(candidates.begin(), candidates.end());
backTracking(ans, candidates, tmp, 0, target);
return ans;
}
void backTracking(vector<vector<int>> &ans, vector<int> &candidates, vector<int> &tmp, int last_use, int rest_target) {
if (rest_target == 0) {
ans.push_back(tmp);
}
for (int i = last_use; i != candidates.size() && candidates[i] <= rest_target; ++i) {
if (i > last_use && candidates[i] == candidates[i-1]) continue;
tmp.push_back(candidates[i]);
backTracking(ans, candidates, tmp, i + 1, rest_target - candidates[i]);
tmp.pop_back();
}
}
};
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/66f0fdc25f5fbac3f2e15487b9a5eebf.png)