Coin Change ll

PHOTO EMBED

Thu Jun 20 2024 23:24:01 GMT+0000 (Coordinated Universal Time)

Saved by @ayushg103 #c++

   int f(int ind,int target,vector<int>& a,vector<vector<int>>& dp)
   {
    int pick,nonPick;
      
      if(ind==0)
      {
        if(target%a[0]==0)
        return 1;
        else return 0;
      }
      if(dp[ind][target]!=-1)return dp[ind][target];
       nonPick = f(ind-1,target,a,dp);
       pick=0;
      if(a[ind]<=target)
        pick = f(ind,target-a[ind],a,dp);
      return dp[ind][target]=(pick+nonPick);
   }
    int change(int amount,vector<int>& coins) {
        int n = coins.size();
        vector<vector<int>> dp(n,vector<int>(amount+1,-1));
        return f(n-1,amount,coins,dp);
        
        
    }
content_copyCOPY

here also initialise pick=0 Remember for pick 1) Initialise pick by value what we want had we not taken pick. 2) Apply condition whether we can pick or not.