代码随想录算法训练营第二十四天|77. 组合。

Leetcode 77. 组合

题目链接: 77. 组合

class Solution {
private:
    vector<vector<int>> result;
    vector<int> vec;
    void traversal(int n1, int n2, int k){
        if(k <= 0){
            result.push_back(vec);
            return;
        }
        //这里剪枝了,第一个选完后,必须给后面留下k-1个位置,不然不必要的递归
        for(int i = n1; i <= n2-k+1; i++){
            vec.push_back(i);
            traversal(i+1,n2,k-1);
            vec.pop_back();
        }
    }
public:
    vector<vector<int>> combine(int n, int k) {
        result.clear();
        vec.clear();
        if(k <= n)
            traversal(1,n,k);
        return result;
    }
};

你可能感兴趣的:(代码随想录算法训练营十五期,算法)