题目:
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
输入:
4
2
输出:
1 2
1 3
1 4
2 3
2 4
3 4
完整代码(C++):
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
void findCombine(int index, vector<int>& tmp, const int& n, const int& k, vector<vector<int>>& res) {
if (tmp.size() == k)//组成一组了,插入到vector
{
res.push_back(tmp);
return;
}
//最主要的代码
for (int i = index; i <= n; i++)
{
tmp.push_back(i);
findCombine(i + 1, tmp, n, k, res);
tmp.pop_back();
}
return;
}
vector<vector<int>> combine(int n, int k)
{
vector<vector<int>> res;
if (n < k || n < 1 || k < 1)
return res;
vector<int> tmp;
findCombine(1, tmp, n, k, res);
return res;
}
};
int main()
{
int n, k;
cin >> n;
cin >> k;
Solution sol;
vector<vector<int>> res;
res = sol.combine(n, k);
for (int i=0;i<res.size();i++)
{
for(int j=0;j<res[i].size();j++)
cout<<res[i][j] << " ";
cout << endl;
}
return 0;
}
这个输出是二维数组!
vector<vector> res的输出参考链接:
vector二维数组的输入输出
我用的是其中的第二种方法:for循环输出的方法。