Problem Statement

Given an array of distinct integers nums and a target integer target, return the number of possible combinations that add up to target.

The answer is guaranteed to fit in a 32-bit integer.

Example 1:

Input: nums = [1,2,3], target = 4
Output: 7
Explanation:
The possible combination ways are:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
Note that different sequences are counted as different combinations.

Problem Link

Combination Sum IV - LeetCode

Code

class Solution {
public:
    vector<int> dp;
    int combinationSum4(vector<int>& nums, int target) {
        
        
        dp.resize(1005,-1);
        int res = 0;
        
       
          return  dfs(target,nums);
      
        
    }
    int dfs(int target,vector<int>&nums)
    {
        if(target<0)
            return 0;
        
        if(dp[target]!=-1)
            return dp[target];
        
        if(target==0)
        {
            return dp[target] = 1;
        }
        
        
        dp[target] = 0;
        for(int i=0;i<nums.size();i++)
        {
            dp[target] += dfs(target-nums[i],nums);
        }
        return dp[target];
    }
};