# Coin change problem dynamic programming

Coin change problem is the last algorithm we are going to discuss in this section of dynamic programming. In the coin change problem, we are basically provided with coins with different denominations like 1¢, 5¢ and 10¢. Now, we have to make an amount by using these coins such that a minimum number of coins are used. The Coin Change Problem is considered by many to be essential to understanding the paradigm of programming known as Dynamic Programming. In other words, dynamic problem is a method of programming that is used to simplify a problem into smaller pieces. The coin-change problem resembles the Knapsack Problem in Dynamic Programming. It has two versions: Finding the minimum number of coins, of certain denominations, required to make a given sum. Finding the total number of possible ways a given sum can be made from a given set of coins.

### Coin change problem dynamic programming -

Ignoring the highest possible coin: In this case, the subproblem is making the same sum with the original set of coins, minus the highest possible coin. We can easily extend dpMakeChange to keep track of the coins used by simply remembering the last coin we add for each entry in the minCoins table. A classic example of an optimization problem involves making change using the fewest coins. This, unlike Dynamic Programming, is computationally expensive. We start with one cent. Like we did coin change problem dynamic programming the 11 cent example above, we remember the minimum value and store*coin change problem dynamic programming*in our minCoins list. Now we have two options to consider, five pennies or one nickel. ActiveCode 1 shows a modified algorithm to incorporate our table lookup scheme. ActiveCode 2 shows the dpMakeChange algorithm modified to keep track of the coins used, along with a function printCoins that walks backward through the table to print out the value of each coin used. This is the base case. Eight 1 cents added together is equal to 8 cents.