WHY MY CODE IS NOT WORKING <<< PLEASE HELP
COIN CHANGE PROBLEM
class Solution {
public:
int helper(vector<int> &coins,int amount , vector<int> &dp,int n,int cnt=0) {
if(n==0) return INT_MAX;
if(amount<0) return INT_MAX;
if(amount == 0) return cnt;
if(coins[n-1]>amount) return dp[amount]=helper(coins,amount,dp,n-1,cnt);
if(dp[amount]!=-1) return dp[amount];
// take the coin and stay there
int op1 = helper(coins,amount-coins[n-1],dp,n,cnt+1);
//Ignore and move
int op2 = helper(coins,amount,dp,n-1,cnt);
// take the coin and move
int op3 = helper(coins,amount-coins[n-1],dp,n-1,cnt+1);
return dp[amount]=min(op1,min(op2,op3));
}
int coinChange(vector<int>& coins, int amount) {
int n = coins.size();
vector<int> dp(amount+1,-1);
//vector<vector<int>> dp(n+1,vector<int>(amount+1,-1));
int x = helper(coins,amount,dp,n);
if(x==INT_MAX) return -1;
return x;
}
};