LeetCode 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) {

        vector<vector<int> > res;

        vector<int> path;

        dfs(res, path, k, n);

        return res;

    }

    

    void dfs(vector<vector<int> >& result, vector<int>& path, int k, int target) {

        if (k == 0 && target == 0) {

            result.push_back(path);

            return;

        }

        if (k == 0 || target < 0) {

            return;

        }

        

        for (int i=1; i<=9; i++) {

            if (!path.empty() && path.back() >= i) {

                continue;

            }

            path.push_back(i);

            dfs(result, path, k - 1, target - i);

            path.pop_back();

        }

    }

};

 

你可能感兴趣的:(LeetCode)