Skip to content

Commit 60f60f9

Browse files
committed
Dfs
1 parent 359f5c4 commit 60f60f9

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

‎Combinations/Combinations.cpp‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
比较基础的题,直接dfs k层就可以了,如果在当前层发现剩下的数凑不齐k个就回溯
3+
*/
4+
class Solution {
5+
public:
6+
vector<vector<int> > combine(int n, int k) {
7+
vector<vector<int> > res;
8+
int *a = new int[k];
9+
dfs(res,a,0,k,0,n);
10+
delete [] a;
11+
return res;
12+
}
13+
void dfs(vector<vector<int> > &res,int *a,int depth,int k,int cur,int n)
14+
{
15+
if(depth == k){
16+
vector<int> tmp;
17+
for(int i = 0;i < k;i++) tmp.push_back(a[i]);
18+
res.push_back(tmp);
19+
return ;
20+
}
21+
for(int i = cur;i < n;i++){
22+
if(n - cur < k - depth) return ; //剩下的数凑不齐k个,回溯
23+
a[depth] = i + 1;
24+
dfs(res,a,depth + 1,k,i + 1,n);
25+
}
26+
}
27+
};

0 commit comments

Comments
 (0)