问题:
题目链接
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2
输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
分析:
提交代码
class Solution {
vector<vector<int> > result;
vector<int> path;
void dfs(int n, int k, int number){
if(path.size() == k){
result.push_back(path);
return ;
}
for(int i = number; i <= n; i++){
path.push_back(i);
dfs(n,k,i+1);
path.pop_back();
}
}
public:
vector<vector<int>> combine(int n, int k) {
dfs(n,k,1);
return result;
}
};
完整代码
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int> > result;
vector<int> path;
void dfs(int n, int k, int number){
if(path.size() == k){
result.push_back(path);
return ;
}
for(int i = number; i <= n; i++){
path.push_back(i);
dfs(n,k,i+1);
path.pop_back();
}
}
int main(){
int n,k;
cin>>n>>k;
dfs(n,k,1);
for(int i = 0; i < result.size(); i++){
for(int j=0; j < result[i].size(); j++){
cout<<result[i][j];
}
cout<<endl;
}
}