Complete-Preparation

🎉 One-stop destination for all your technical interview Preparation 🎉

View the Project on GitHub

Count subsets with target sum 🌟🌟

Solution

Code

int findWays(vector<int> &arr, int k)
{
    int n = arr.size();
    vector<int> prev(k + 1, 0), curr(k + 1, 0);
    prev[0] = 1;
    curr[0] = 1;
    if(arr[0]<=k) prev[arr[0]] = 1;

    for (int i = 1; i < n; i++) {
        for (int target = 0; target <= k; target++) {
            int take = 0;
            if (arr[i] <= target)
                take = prev[target - arr[i]];
            int notTake = prev[target];
            curr[target] = (take + notTake);
        }
        prev = curr;
    }

    return prev[k];
}