77.组合

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

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

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

#include 
using namespace std;
class Solution {
public:
    vector> combine(int n, int k) {
        vector> result;
        vector temp;
        int start = 1;
        combain(start, n, k, result, temp);
        return result;
    }
    void combain(int start,int n, int k, vector>& result, vector& 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.组合)