[LeetCode 题解]:Combinations

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],
]
DFS,递归
 1 class Solution {
 2 public:
 3     vector<vector<int> > ans;
 4     vector<int> vi;
 5     int k_start,n_start;
 6     void DFS(int Count,int start)
 7     {
 8         if(Count== k_start)
 9         {
10             ans.push_back(vi);
11             return;
12         }
13         for(int i=start;i<n_start;i++)
14         {
15             vi[Count] = i+1;
16             DFS(Count+1, i+1);
17         }
18     }
19     vector<vector<int> > combine(int n, int k) {
20         ans.clear();
21         vi.resize(k);
22         k_start = k;
23         n_start = n;
24         DFS(0,0);
25         return ans;
26     }
27 };

 

posted @ 2014-06-30 20:37  Double_win  阅读(242)  评论(0编辑  收藏  举报