注:此题还是比较经典的!
动态规划 + 贪心
int coinChange(vector<int>& coins, int amount) {
// 这里注意开辟空间的大小,防止溢出
int F_[10000] = { 0 };
for (int s = 1; s <= amount; s++) {
int idx_ = 0;
int sMin_ = INT_MAX;
for (int i = 0; i < coins.size(); i++) {
if (s - coins[i] < 0)
continue;
idx_ = s - coins[i];
if (F_[idx_] == -1)
continue;
if (F_[idx_] + 1 < sMin_)
sMin_ = F_[idx_] + 1;
}
if (sMin_ == INT_MAX) {
F_[s] = -1;
continue;
}
F_[s] = sMin_;
}
return F_[amount];
}