leetcode.216. Combination Sum III

来源:互联网 发布:算法第四版课后题答案 编辑:程序博客网 时间:2024/06/05 20:51

Find all possible combinations of k numbers that add up to a numbern, 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; };


0 0