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