77.组合

2018-11-20  本文已影响0人  HITZGD

题目
给定两个整数 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;
}

上一篇下一篇

猜你喜欢

热点阅读