[LeetCode] Coin Change


Coin Change

You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

Example 1:
coins = [1, 2, 5], amount = 11
return 3 (11 = 5 + 5 + 1)

Example 2:
coins = [2], amount = 3
return -1.

Note:
You may assume that you have an infinite number of each kind of coin.

Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

 

DP!

 1 class Solution {
 2 public:
 3     int coinChange(vector<int>& coins, int amount) {
 4         vector<int> dp(amount + 1, INT_MAX);
 5         dp[0] = 0;
 6         for (auto coin : coins) {
 7             for (int i = coin; i <= amount; ++i) {
 8                 if (dp[i-coin] != INT_MAX) {
 9                     dp[i] = min(dp[i], dp[i - coin] + 1);
10                 }
11             }
12         }
13         return dp[amount] == INT_MAX ? -1 : dp[amount];
14     }
15 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM