
You are given an integer array coins representing coins of different denominations and an integer amount representing a total amount of money.
Return the number of combinations that make up that amount . If that amount of money cannot be made up by any combination of the coins, return 0 .
You may assume that you have an infinite number of each kind of coin.
The answer is guaranteed to fit into a signed 32-bit integer.
1 <= coins.length <= 3001 <= coins[i] <= 5000All the values of coins are unique .0 <= amount <= 5000