用39题一样的回溯法做,感觉比30简单= =
class Solution {
public:
	vector<vector<int>>res;
	void Retrospective(vector<int> candidates, vector<int>temp, int idx,int target,int sum) {
		if (sum == target) {
			sort(temp.begin(), temp.end());
			res.push_back(temp);
			return;
		}
		for (int i = idx; i < candidates.size(); ++i) {
			if (sum + candidates[i] <= target) {
				temp.push_back(candidates[i]);
				Retrospective(candidates, temp, i + 1, target, sum + candidates[i]);
				temp.pop_back();
			}
		}
	}
	vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
		res.clear();
		vector<int>temp;
		Retrospective(candidates, temp, 0, target, 0);
		sort(res.begin(), res.end());
		res.erase(unique(res.begin(), res.end()), res.end());
		return res;
	}
};