标签:
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 static void dfs(int n,int k,int start,int cur,vector<int> &path,vector<vector<int> >&result) 4 { 5 if(cur==k) 6 result.push_back(path); 7 8 for(int i=start;i<=n;i++) 9 { 10 path.push_back(i); 11 dfs(n,k,i+1,cur+1,path,result); 12 path.pop_back(); 13 } 14 } 15 vector<vector<int> > combine(int n, int k) { 16 vector<vector<int> >result; 17 vector<int> path; 18 dfs(n,k,1,0,path,result); 19 return result; 20 } 21 };
标签:
原文地址:http://www.cnblogs.com/jawiezhu/p/4486511.html