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:
    vector<vector<int>> 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();
        }
    }
    vector<vector<int>> ret;
};

 

posted @ 2022-03-07 17:15  鸭子船长  阅读(20)  评论(0编辑  收藏  举报