You are given an integer amount and an array of integers coins representing coin denominations.
Return the number of combinations that make up that amount. If no combination of coins can make the amount, return 0.
You may use each coin denomination an unlimited number of times. The order of coins does not matter - [1, 2] and [2, 1] count as the same combination.
Input: amount = 5, coins = [1, 2, 5] Output: 4 Explanation: The four combinations are: 5=5, 5=2+2+1, 5=2+1+1+1, 5=1+1+1+1+1.
Input: amount = 3, coins = [2] Output: 0 Explanation: No combination of 2s can sum to 3, so there are 0 ways.
Input: amount = 10, coins = [10] Output: 1 Explanation: The only way to make 10 is a single 10-coin.
amount = 5, coins = [1, 2, 5]