LeetCode[216] Combination Sum III

Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.


Example 1:

Input: k = 3, n = 7

Output:

[[1,2,4]]


Example 2:

Input: k = 3, n = 9

Output:

[[1,2,6], [1,3,5], [2,3,4]]

class Solution {
public:
	vector<vector<int>> combinationSum3(int k, int n) {
		vector<vector<int>> res;
		vector<int> vec;
		combinationSum(res, vec, n, 1, k);
		return res;
	}
	void combinationSum(vector<vector<int>>& res, vector<int>& vec, int sum, int start, int k)
	{
		if (sum < 0)
			return;
		if (sum == 0 && vec.size() == k)
			res.push_back(vec);
		else
		{
			for (int i = start; i <= 9; ++i)
			{
				vec.push_back(i);
				combinationSum(res, vec, sum - i, i + 1, k);
				vec.pop_back();
			}
		}
	}
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章