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

 

你可能感兴趣的:(LeetCode)