Advertisement
l_garg

Untitled

Jul 8th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int coinChange(vector<int>& coins, int amount) {
  4.         int n=coins.size();
  5.         sort(coins.begin(), coins.end());
  6.         vector<vector<int> >dp(n, vector<int>(amount+1));
  7.         for(int i=0; i<n; i++){
  8.             dp[i][0]=0;
  9.         }
  10.         for(int j=1; j<=amount; j++){
  11.             if(j%coins[0]==0){
  12.                 dp[0][j]=j/coins[0];
  13.             }
  14.             else{
  15.                 dp[0][j]=-1;
  16.             }
  17.         }
  18.         for(int i=1; i<n; i++){
  19.             for(int j=1; j<=amount; j++){
  20.                 if(coins[i]<=amount){
  21.                     if(j%coins[i]==0){
  22.                         dp[i][j]=j/coins[i];
  23.                     }
  24.                     else{
  25.                         if(dp[i-1][j]==-1  && dp[i-1][j%coins[i]]==-1){
  26.                             dp[i][j]=-1;
  27.                         }
  28.                         else if(dp[i-1][j]!=-1  && dp[i-1][j%coins[i]]==-1){
  29.                             dp[i][j]=dp[i-1][j];  
  30.                         }
  31.                         else if(dp[i-1][j]==-1  && dp[i-1][j%coins[i]]!=-1){
  32.                             dp[i][j]=dp[i-1][j%coins[i]] + j/coins[i];    
  33.                         }
  34.                         else{
  35.                             dp[i][j]=min( dp[i-1][j%coins[i]] + j/coins[i], dp[i-1][j]);    
  36.  
  37.                         }
  38.                     }
  39.                 }
  40.                 else{
  41.                     dp[i][j]=dp[i-1][j];
  42.                 }
  43.             }
  44.         }    
  45.         return dp[n-1][amount];
  46.     }
  47. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement