动态规划,算一下$需要的最少硬币是多少
class Solution {public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount + 1, 1000000);dp[0] = 0;for(int i = 1; i <= amount; i++){for(auto x: coins){if(i - x >= 0 && dp[i - x] != 1000000)dp[i] = min(dp[i], dp[i - x] + 1);}}if(dp[amount] == 1000000) return -1;else return dp[amount];}};
第二次写题
class Solution {public:int coinChange(vector<int>& coins, int amount) {vector<int> aCoins(amount + 1, 10000);aCoins[0] = 0;sort(coins.begin(), coins.end());for(int i = 1; i <= amount; i++){for(int k = 0; k < coins.size(); k++){if(i < coins[k]) break;if(aCoins[i - coins[k]] == 10000) continue;aCoins[i] = min(aCoins[i], aCoins[i - coins[k]] + 1);}}return aCoins[amount] == 10000? -1:aCoins[amount];}};
