LeetCode:77.組合

class Solution {
public:
    vector<vector<int>>res;
    //求解C(n,k),當前已經找到的組合存儲在c中,需要從start開始搜索新的元素
    void generateCombinations(int n,int k,int start,vector<int> &c){

        if(c.size()==k){
            //如果找到了一個組合,就將其存儲在結果res中
            res.push_back(c);//遞歸終止
            return ;
        }

        //回溯算法遞歸過程
        for(int i=start;i<=n;i++)
        {
            c.push_back(i);
            generateCombinations(n,k,i+1,c);//遞歸調用
            //回溯
            c.pop_back();
        }
        return;
    }

    vector<vector<int>> combine(int n, int k) {
        res.clear();
        if(n<=0||k<=0||k>n){
            return res;
        }

        vector<int>c;//存儲臨時的生成的組合
        generateCombinations(n,k,1,c);
        return res;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章