Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int dp[1000000];
- int inf = 99999999;
- int coinChange(vector<int>& coins, int amount) {
- memset(dp, -1, sizeof(dp));
- sort(coins.begin(), coins.end());
- int ans = solve(coins, amount);
- if(ans >= inf){
- ans = -1;
- }
- return ans;
- }
- int solve(vector<int>& coins, int amount) {
- if(amount <= 0){
- return 0;
- }
- if(dp[amount] != -1) return dp[amount];
- int ret = inf, temp;
- for(int i = coins.size() - 1; i >=0; i--){
- if(amount >= coins[i]){
- temp = solve(coins, amount - coins[i]);
- ret = min(ret, temp);
- }
- }
- return dp[amount] = 1 + ret;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment