Given n unique integers, number k (1<=k<=n) and target. Find all possible k integers where their sum is target.
Example
Given [1,2,3,4], k=2, target=5, [1,4] and [2,3] are possible solutions
class Solution {
public:
void calc(vector<vector<int> > &res, vector<int> &one, vector<int> &A,
int s, int k, int target)
{
if(k == 0)
{
if(0 == target) res.push_back(one);
return;
}
for(int i=s;i<A.size() && A[i] <= target;i++)
{
one.push_back(A[i]);
calc(res, one, A, i+1, k-1, target-A[i]);
one.pop_back();
}
}
vector<vector<int> > kSumII(vector<int> A, int k, int target) {
// write your code here
sort(A.begin(), A.end());
vector<vector<int> > res;
vector<int> one;
calc(res, one, A, 0, k, target);
return res;
}
};