[LeetCode] Combinations, Solution


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:
[
[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: }


原文地址:https://www.cnblogs.com/codingtmd/p/5078917.html