triplemzim

Coin change leetcode

Mar 25th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.82 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int dp[1000000];
  4.     int inf = 99999999;
  5.     int coinChange(vector<int>& coins, int amount) {
  6.         memset(dp, -1, sizeof(dp));
  7.         sort(coins.begin(), coins.end());
  8.        
  9.         int ans = solve(coins, amount);
  10.         if(ans >= inf){
  11.             ans = -1;
  12.         }
  13.         return ans;
  14.     }
  15.    
  16.     int solve(vector<int>& coins, int amount) {
  17.        
  18.         if(amount <= 0){
  19.             return 0;
  20.         }
  21.        
  22.         if(dp[amount] != -1) return dp[amount];
  23.         int ret = inf, temp;
  24.  
  25.         for(int i = coins.size() - 1; i >=0; i--){
  26.             if(amount >= coins[i]){
  27.                 temp = solve(coins, amount - coins[i]);
  28.                 ret = min(ret, temp);
  29.             }
  30.         }
  31.         return dp[amount] = 1 + ret;
  32.     }
  33.    
  34.    
  35.  
  36.  
  37. };
Advertisement
Add Comment
Please, Sign In to add comment