Solution: Coin Change Problem
This review provides a detailed analysis of the different ways to solve the coin change problem.
Solution #1: Brute force
Press + to interact
class Count {public static int countChange(int[] denoms, int denomsLength, int amount) {// If n is 0 then there is 1 solution// (do not include any coin)if (amount == 0)return 1;// If n is less than 0 then no// solution existsif (amount < 0 || denomsLength <= 0)return 0;// If there are no coins and n// is greater than 0, then no// solution existif (denomsLength <= 0 && amount >= 1)return 0;// count is sum of solutions (i)// including S[m-1] (ii) excluding S[m-1]return countChange(denoms, denomsLength - 1, amount) + countChange(denoms, denomsLength, amount - denoms[denomsLength - 1]);}public static void main(String args[]) {// Denominations: quarters (25 cents), dimes (10 cents), nickels (5 cents), and pennies (1 cent)int[] denoms = {25,10,5,1};System.out.println(countChange(denoms, 4, 10));}};
Explanation
To count the total number of solutions, we divide the solution into two sets: one subset does not contain the coin currently being evaluated, and the other subset contains at least one coin of that denomination.
However, notice that the function above recomputes the same subproblem several times.
Time complexity
The time complexity of this solution is in . Why? Because for every coin, we have 2 options: to either include it or exclude it. So, if we think in terms of binary, it’s 0 to exclude or 1 to include every coin. For example, if we have 2 coins, the options will be 00, 01, 10, 11, which is 4 or options. Therefore, extrapolating to ...
Access this course and 1400+ top-rated courses and projects.