https://leetcode.com/problems/coin-change/?envType=study-plan-v2&envId=top-interview-150
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
int n = coins.size();
vector<int> f(amount + 1, INT_MAX);
f[0] = 0;
for (int i = 1; i <= amount; i++) {
for (int j = 0; j < n; j++) {
if (i - coins[j] >= 0 && (f[i - coins[j]] != INT_MAX)) {
f[i] = min(f[i], f[i - coins[j]] + 1);
}
}
}
return f[amount] == INT_MAX ? -1 : f[amount];
}
};
當我們要確認換出 amount = i 的方法數量就會是嘗試將 i - coins[j] 並且看在這樣的情況下有多少種可能,我們將所有的 coins 的結果加總就會是 amount = i 的所有可能。