递归回溯
class Solution {
public:
void Sum(int k,int n,int tot,int sta,vector<vector<int>>& res,vector<int>& ans)
{
if(tot>n||ans.size()>k)
return;
if(tot==n&&ans.size()==k)
{
res.push_back(ans);
return;
}
for(int i=sta;i<=9;i++)
{
ans.push_back(i);
Sum(k,n,tot+i,i+1,res,ans);
ans.pop_back();
}
}
vector<vector<int>> combinationSum3(int k, int n) {
vector<vector<int>> res;
vector<int> ans;
Sum(k,n,0,1,res,ans);
return res;
}
};
本文介绍了一个使用C++实现的递归回溯算法案例,该算法用于找出所有可能的有效组合,使得从1到9的数字中恰好选择k个数字,且这些数字的总和等于n。通过具体的代码示例展示了如何利用递归和回溯的方法来解决这个问题。
5万+

被折叠的 条评论
为什么被折叠?



