leetcode 77. Combinations

来源:互联网 发布:淘宝借贷平台 编辑:程序博客网 时间:2024/05/21 19:47

题意

求在区间[1,n]内的k个数的所有组合。

题解

用一个flag数组表示区间内的一个数是否在当前组合内:存在(true)、不存在(false)

代码

class Solution {public:    vector<vector<int> > result;    void combine_recur(bool flag[], int pos, int n, int k)    {        if(pos == n)        {            if(k != 0)                return;            else if(k == 0)            {                vector<int> temp;                for(int i = 1; i < n; i++)                    if(flag[i] == true)                        temp.push_back(i);                result.push_back(temp);            }        }        else        {            flag[pos] = true;            combine_recur(flag, pos + 1, n, k - 1);            flag[pos] = false;            combine_recur(flag, pos + 1, n, k);        }    }    vector<vector<int>> combine(int n, int k) {        bool *flag = new bool[n + 1];        fill(flag, flag + n + 1, false);        combine_recur(flag, 1, n + 1, k);        return result;    }};
0 0
原创粉丝点击