77.组合

作者: HITZGD | 来源:发表于2018-11-20 20:37 被阅读0次

    题目
    给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。

    示例:
    输入: n = 4, k = 2
    输出:
    [
    [2,4],
    [3,4],
    [2,3],
    [1,2],
    [1,3],
    [1,4],
    ]

    思路
    利用基本的迭代回溯法,当容器中值得数量为K时,满足条件

    #include <vector>
    using namespace std;
    class Solution {
    public:
        vector<vector<int>> combine(int n, int k) {
            vector<vector<int>> result;
            vector<int> temp;
            int start = 1;
            combain(start, n, k, result, temp);
            return result;
        }
        void combain(int start,int n, int k, vector<vector<int>>& result, vector<int>& temp)
        {
            if (temp.size() == k)
            {
                result.push_back(temp);
                return;
            }
            for (int i = start; i <= n; i++)
            {
                temp.push_back(i);
                combain(i + 1, n, k, result, temp);
                temp.pop_back();
            }
        }
    };
    
    int main(int argc, char* argv[])
    {
        int n = 4, k = 2;
        auto res = Solution().combine(n, k);
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:77.组合

          本文链接:https://www.haomeiwen.com/subject/roqfqqtx.html