Ways To Make Coin Change

Moderate
0/80
Average time to solve is 20m
profile
Contributed by
207 upvotes
Asked in companies
AmazonCIS - Cyber InfrastructureLinkedIn

Problem statement

You are given an infinite supply of coins of each of denominations D = {D0, D1, D2, D3, ...... Dn-1}. You need to figure out the total number of ways W, in which you can make a change for value V using coins of denominations from D. Print 0, if a change isn't possible.

Detailed explanation ( Input/output format, Notes, Images )
Input Format
The first line of input contains an integer N, representing the total number of denominations.

The second line of input contains N integers values separated by a single space. Each integer value represents the denomination value.

The third line of input contains the value of V, representing the value for which the change needs to be generated.
Output Format:
For each test case, print an integer denoting the total number of ways W, in which a change for V is possible.
Note:
You do not need to print anything, it has already been taken care of. Just implement the given function.

Constraints :

1 <= N <= 10
1 <= D[i] <=10^5
1 <= V <= 2 * 10^3

Where 'D[i]' represent the value of ith denomination. 

Time Limit: 1sec
Sample Input 1 :
3
1 2 3
4
Sample Output 1:
4
Explanation for Sample Output 1:
We can make a change for the value V = 4 in four ways.
1. (1,1,1,1), 
2. (1,1, 2), [One thing to note here is, (1, 1, 2) is same as that of (2, 1, 1) and (1, 2, 1)]
3. (1, 3), and 
4. (2, 2)
Sample Input 2 :
3
5 3 2
1
Sample Output 2:
0
Hint

Try all combinations by either including or excluding a particular coin.

Approaches (4)
Recursion

 

  1. The idea is to use recursion.
  2. For a particular coin, we have two options either include it or exclude it.
  3. If we include that coin, then calculate the remaining number that we have to generate so recur for that remaining number.
  4. If we exclude that coin, then recur for the same amount that we have to make.
  5. Our final answer would be the total number of ways either by including or excluding.
  6. There will be two edge cases in recursion that are: if the total amount we have is zero then return 1 (solution found) and if the total amount we have become negative or no elements are left then return zero that is if (n < 0 || value < 0) then return 0.
Time Complexity

O(2^N), where N is the total number of coins.

 

Because for every coin we are making two recursion calls.

Space Complexity

O(N), where N is the total number of coins.

 

As we are not using any memory to store anything, but we are recurring, so stack space will get considered.

Video Solution
Unlock at level 3
(75% EXP penalty)
Code Solution
(100% EXP penalty)
Ways To Make Coin Change
Full screen
Console