[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/jpollo/Java/master/Dynamic%20Programming/CoinChange.java [Back]  [Original]

/**
 *
 * @author Varun Upadhyay (https://github.com/varunu28)
 *
 */

public class CoinChange {

    // Driver Program
    public static void main(String[] args) {

        int amount = 12;
        int[] coins = {1, 2, 5};

        System.out.println("Number of combinations of getting change for " + amount + " is: " + change(coins, amount));
    }

    /**
     * This method finds the number of combinations of getting change for a given amount and change coins
     *
     * @param coins The list of coins
     * @param amount The amount for which we need to find the change
     * Finds the number of combinations of change
     **/
    public static int change(int[] coins, int amount) {

        int[] combinations = new int[amount+1];
        combinations[0] = 1;

        for (int coin : coins) {
            for (int i=coin; i=coin) {
                    combinations[i] += combinations[i-coin];
                }
            }
            // Uncomment the below line to see the state of combinations for each coin
            // printAmount(combinations);
        }

        return combinations[amount];
    }

    // A basic print method which prints all the contents of the array
    public static void printAmount(int[] arr) {

        for (int i=0; i

Web Proxy Viewer  |  New URL  |  Original Page