leetcode-77. 组合
题目:
代码:
#include <iostream>
#include <vector>
using namespace std;
void dfs(vector<int>& nums,int begin,int k,vector<vector<int> >& res,vector<int>& path){
if(path.size()==k){
res.push_back(path);
return;
}
for(int i=begin;i<nums.size();i++){
path.push_back(nums[i]);
begin++;
dfs(nums,begin,k,res,path);
path.pop_back();
}
}
vector<vector<int> > combine(int n, int k) {
vector<vector<int> > res;
vector<int> path;
vector<int> nums;
if(k<=0 || k>n){
return res;
}
for(int i=1;i<=n;i++){
nums.push_back(i);
}
dfs(nums,0,k,res,path);
return res;
}
int main(){
vector<vector<int> > res;
int n,k;
cin>>n>>k;
res=combine(n,k);
for(int i=0;i<res.size();i++){
for(int j=0;j<res[0].size();j++){
cout<<res[i][j]<<" ";
}
cout<<endl;
}
return 0;
}