题解 | 组合

组合

https://www.nowcoder.com/practice/7cfd3675cc964ae6818a771ac97ece5f

class Solution {
  //组合,采用的是按照顺序进行选取,组合:有几个东西,多少组合在一起成一种情况,有多少种情况,选了这个或者不选这个直到选够了K个作为一种递归方式,另一种就是递归中有循环,一层递归就是选一位,循环尝试每一个数作为本位;
public:
    vector<vector<int>> ans;
    vector<int> temp;

    vector<vector<int> > combine(int n, int k) {
        
        dp(n, k, 1);

        return ans;
    }

    void dp(int n, int remain, int index){
        // if(index == n+1){   在此情况下若也凑够了K个,直接返回的话导致,诶呦添加;
        //     return;
        // }

        if(remain == 0){
            ans.push_back(temp);
            return;
        }

        for(int i=index; i<=n-remain+1 ;++i){
            temp.push_back(i);
            dp(n, remain-1, i+1);
            temp.pop_back();
        }
        
        return;
    }
};

全部评论

相关推荐

牛客928043833号:在他心里你已经是他的员工了
点赞 评论 收藏
分享
05-05 21:45
已编辑
广州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务