# Java Program for Coin Change

Given a value N, if we want to make change for N cents, and we have infinite supply of each of S = { S1, S2, .. , Sm} valued coins, how many ways can we make the change? The order of coins doesn\’t matter.

For example, for N = 4 and S = {1,2,3}, there are four solutions: {1,1,1,1},{1,1,2},{2,2},{1,3}. So output should be 4. For N = 10 and S = {2, 5, 3, 6}, there are five solutions: {2,2,2,2,2}, {2,2,3,3}, {2,2,6}, {2,3,5} and {5,5}. So the output should be 5.

## Java

 `/* Dynamic Programming Java implementation of Coin ` `   ``Change problem */` `import` `java.util.Arrays; ` ` `  `class` `CoinChange ` `{ ` `    ``static` `long` `countWays(``int` `S[], ``int` `m, ``int` `n) ` `    ``{ ` `        ``// Time complexity of this function: O(mn) ` ` `  `        ``// table[i] will be storing the number of solutions ` `        ``// for value i. We need n+1 rows as the table is ` `        ``// constructed in bottom up manner using the base ` `        ``// case (n = 0) ` `        ``long``[] table = ``new` `long``[n+``1``]; ` ` `  `        ``// Initialize all table values as 0 ` `        ``Arrays.fill(table, ``0``);   ``//O(n) ` ` `  `        ``// Base case (If given value is 0) ` `        ``table[``0``] = ``1``; ` ` `  `        ``// Pick all coins one by one and update the table[] ` `        ``// values after the index greater than or equal to ` `        ``// the value of the picked coin ` `        ``for` `(``int` `i=``0``; i

Please refer complete article on Dynamic Programming | Set 7 (Coin Change) for more details!

My Personal Notes arrow_drop_up
Article Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.