数组:
给定一个数组,求出数组中和为某个值的所有组合。
例子:数组{3,2,1,1,1,5,6}中和为10的所有组合
思路:
通过递归加回溯的办法解决,具体思路看代码:
void getSum(vector<int> &nums,int pos,int sum,vector<int> &v)
{
if(sum < 0)
{
return;
}
if(sum == 0)
{
for(int i = 0;i<v.size();i++)
{
cout<<v[i]<<" ";
}
cout<<endl;
return;
}
for(int i = pos;i<nums.size();i++)
{
v.push_back(nums[i]);
getSum(nums,i+1,sum-nums[i],v);
v.pop_back();
}
}