From 7208bdd52e5a0f17b0055b462a95e9eb7a786442 Mon Sep 17 00:00:00 2001 From: Varun Upadhyay Date: Sun, 5 Nov 2017 09:35:25 -0800 Subject: [PATCH] Create CoinChange.java --- Dynamic Programming/CoinChange.java | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Dynamic Programming/CoinChange.java diff --git a/Dynamic Programming/CoinChange.java b/Dynamic Programming/CoinChange.java new file mode 100644 index 00000000..51fc64a5 --- /dev/null +++ b/Dynamic Programming/CoinChange.java @@ -0,0 +1,52 @@ +/** + * + * @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