77. 组合
就一直往后走就行,因为是要组合,没用重复的所以[1,3]和[3,1]是相同的,不需要visited数组
从1开始添加,如果到达k长度就记录,不到的话就向下一层,当这一层结束时把这层的字符退掉保持长度。
代码
class Solution {
public:
vector<vector<int>> combine(int n, int k) {
//就是要写全排列吧 我也试一试啊
vector<vector<int>> vv;
vector<int>g;
for(int i=0;i<n;i++){
dfs(vv,k,i,n,g);
}
return vv;
}
void dfs(vector<vector<int>> &vv,int k,int index,int n,vector<int> &g){
if(index>=n)return;
g.push_back(index+1);
if(g.size()==k){
vv.push_back(g);
}else{
for(int i=index+1;i<n;i++){
dfs(vv,k,i,n,g);
}
}
g.pop_back();
}
};