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


posted on   小刀初试  阅读(120)  评论(0)    收藏  举报

< 2013年1月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

统计

点击右上角即可分享
微信分享提示