Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]» Solve this problem
[Thoughts]
Similar as "Conbination Sum". But here the terminate condition is "k", not sum.
[Code]
1: vector<vector<int> > combine(int n, int k) {
2: // Start typing your C/C++ solution below
3: // DO NOT write int main() function
4: vector<vector<int> > result;
5: vector<int> solution;
6: GetCombine(n,k,1, solution, result);
7: return result;
8: }
9: void GetCombine(
10: int n,
11: int k,
12: int level,
13: vector<int>& solution,
14: vector<vector<int> >& result)
15: {
16: if(solution.size() == k)
17: {
18: result.push_back(solution);
19: return;
20: }
21: for(int i =level; i<= n; i++)
22: {
23: solution.push_back(i);
24: GetCombine(n,k,i+1, solution, result);
25: solution.pop_back();
26: }
27: }
No comments:
Post a Comment