1procedure coinChange(coins, amount)
2 create dp[0..amount], fill with ∞
3 dp[0] ← 0
4 for i ← 1 to amount do
5 for each coin in coins do
6 if coin ≤ i then
7 dp[i] ← min(dp[i], dp[i - coin] + 1)
8 if dp[amount] = ∞ then return -1
9 return dp[amount]