[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.

Note:

  • All numbers will be positive integers.
  • The solution set must not contain duplicate combinations.

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> out;
        combinationSum3DFS(res, out, 1, k, n);
        return res;
    }
    
    void combinationSum3DFS(vector<vector<int>>& res, vector<int>& out, int start, int k, int n) {
        if (n < 0)
            return ;
        if (n == 0 && out.size() == k)
            res.push_back(out);
        
        for (int i = start; i <= 9; i ++) {
            out.push_back(i);
            combinationSum3DFS(res, out, i+1, k, n-i);
            out.pop_back();
        }
    }
};
发布了467 篇原创文章 · 获赞 40 · 访问量 45万+

猜你喜欢

转载自blog.csdn.net/caicaiatnbu/article/details/104176927