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],
]
 1 class Solution {
 2 public:
 3     vector<vector<int>> combine(int n, int k) {
 4         vector<vector<int>> result;
 5         vector<int> path;
 6         dfs(n,k,1,0,path,result);
 7         return result;
 8     }
 9     
10 private:
11     static void dfs(int n,int k,int start,int cur, vector<int> &path,vector<vector<int>> &result)
12     {
13         if(cur==k) result.push_back(path);
14         
15         for(int i=start;i<=n;i++)
16         {
17             
18             path.push_back(i);
19             dfs(n,k,i+1,cur+1,path,result);
20             path.pop_back();
21             
22         }
23         
24     }
25 };

 

posted @ 2015-09-06 20:17  尾巴草  阅读(126)  评论(0编辑  收藏  举报