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); }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter