思路:DFS中的组合型递归。
这个就不解释了,我们在之前写过这个很简单的问题,说实话,就是从9个数里面选出来3个进行组合看看和是不是目标数而已。
上代码:
int st[100];
vector<vector<int>>ha;
vector<int>path;
int arr[3];
class Solution {
public:
void dfs(int start,int u,int n,int k,int sum){
if(u>k){
if(sum!=n)return;
else{
ha.push_back(path);
}
return;
}
for(int i=start;i<=9;i++){
path.push_back(i);
dfs(i+1,u+1,n,k,sum+i);
path.pop_back();
}
}
vector<vector<int>> combinationSum3(int k, int n) {
memset(st,0,sizeof st);
ha.clear();
dfs(1,1,n,k,0);
if(k>n)
return {};
else
return ha;
}
};