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基础题
class Solution {
public:
vector<vector<int> > combine(int n, int k) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int>> ret;
vector<int> vec(k,0);
dfs(ret,vec,0,1,n,k);
return ret;
}
void dfs(vector<vector<int>> &ret,vector<int> vec,int dep,int start,int n,int k)
{
if(dep == k){
ret.push_back(vec);
return;
}
for(int i = start;i <= n;i++)
{
vec[dep] = i;
dfs(ret,vec,dep+1,i+1,n,k);
}
}
};
72 milli secs.