Leetcode 77. 组合(中等)回溯算法


77. 组合(中等)

题目:

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 输入:n = 4, k = 2 * 输出: * [ * ? [2,4], * ? [3,4], * ? [2,3], * ? [1,2], * ? [1,3], * ? [1,4], * ]   思路: 在回溯时使用start变量来确定起点  
class Solution {
public:
    vectorint>> combine(int n, int k) {
        vector<int> track;
        backtrack(n,k,track,1);
        return ret;
    }
    void backtrack(int n,int k,vector<int>& track, int index){
        if(track.size()==k){
            ret.push_back(track);
            return;
        }
        for(int i=index;i<=n;++i){
            track.push_back(i);
            backtrack(n,k,track,i+1);
            track.pop_back();
        }
    }
    vectorint>> ret;
};