c++:
vector<vector<int>> combine(int n, int k) {
vector<vector<int> > res;
vector<int> ans;
bkt(n,res,k,ans,1);
return res;
}
void bkt(int n,vector<vector<int>>& res,int k,vector<int>& ans,int start){
if(ans.size()==k){
res.push_back(ans);
return ;
}
for(int i=start;i<=n;i++){
ans.push_back(i);
bkt(n,res,k,ans,i+1);
ans.pop_back();
}
}
python:
class Solution(object):
def combine(self, n, k):
"""
:type n: int
:type k: int
:rtype: List[List[int]]
"""
res = []
def dfs(j,temp):
if k==len(temp):
res.append(copy.deepcopy(temp))//或者list(temp)
return
for i in range(j,n+1):
temp.append(i)
dfs(i+1,temp)
temp.remove(i)
dfs(1,[])
return res