https://leetcode.com/problems/coin-change/#/description
经典DP
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
const int INF = INT_MAX / 2;
vector<int> dp(amount + 1, INF);
dp[0] = 0;
for (int i = 0; i < coins.size(); i++) {
for (int j = 0; j <= amount - coins[i]; j++) {
dp[j + coins[i]] = min(dp[j + coins[i]], dp[j] + 1);
}
}
if (dp[amount] == INF) dp[amount] = -1;
return dp[amount];
}
};