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.

Ensure that numbers within the set are sorted in ascending order.


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) {
        dfs(k,n,0);
        return res;
    }
     void dfs(int num,int left,int cur) // 剩下的个数,剩下的值,当前值 
    {
        if(num==0&&left==0)
        { 
            res.push_back(v);
        }
        for(int i=1;i<=9;i++)
        {
            if(i>cur&&left>=i&&left>=num&&left<=num*9)
            {
                v.push_back(i);
                dfs(num-1,left-i,i);
                v.pop_back();
             } 
        }
    } 
    
private: 
    vector< vector<int> > res;
    vector<int> v; 
};


你可能感兴趣的:(leetcode.216. Combination Sum III)