Leetcode40.Combination_Sum_II

思路类似于Leetcode39.Combination_Sum
C++代码:

class Solution {
public:
	vector<vector<int>> result;
	vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
		sort(candidates.begin(), candidates.end());
		combinate(candidates, candidates.size() - 1, {}, target);
		return result;
	}
	void combinate(vector<int>& candidates, int pos, vector<int>contain, int target)
	{
		if (target == 0)
			result.push_back(contain);
		if (target < 0)
			return;
		for (int i = pos; i >= 0; i--)
		{
			if (i != pos && candidates[i] == candidates[i + 1]) //important!
				continue;
			contain.push_back(candidates[i]);
			combinate(candidates, i - 1, contain, target - candidates[i]);
			contain.pop_back();
		}
	}
};

猜你喜欢

转载自blog.csdn.net/qq_42263831/article/details/82751698