Given n distinct positive integers, integer k (k <= n) and a number target.
Find k numbers where sum is target. Calculate how many solutions there are?
Example
This problem is similar with backpack, but it has a constraint of k elements.
Given [1,2,3,4], k=2, target=5. There are 2 solutions:
[1,4] and [2,3], return 2.
class Solution { public: int kSum(vector<int> A, int k, int target) { vector<vector<int>> rec(target+1, vector<int>(k, 0)); for(int i=0;i<A.size();i++) { for(int j=target; j>=A[i]; j--) { if(A[i] == j) rec[j][0]++; for(int v = 0; v < min(k-1,i); v++) { rec[j][v+1] += rec[j-A[i]][v]; } } } return rec[target][k-1]; } };