回溯之组合总和
#include<bits/stdc++.h>
using namespace std;
class Solution{
private:
vector<vector<int> > res;
vector<int> path;
public:
void dfs(int tar,int sum,int k,int st){
if(path.size()==k){
if(sum==tar) res.push_back(path);
return;
}
for(int i=st;i<=9-(k-path.size())+1;i++){
path.push_back(i);
sum+=i;
dfs(tar,sum,k,i+1);
path.pop_back();
sum-=i;
}
}
vector<vector<int> > result(int tar,int k){
dfs(tar,0,k,1);
return res;
}
};
int main(){
int tar,k;
cin>>tar>>k;
Solution solution;
vector<vector<int> > v;
v=solution.result(tar,k);
for(int i=0;i<v.size();i++){
for(int j=0;j<v[i].size();j++){
cout<<v[i][j]<<" ";
}
cout<<endl;
}
}
欢迎批评指正!