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.
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
3
1 2 3
4
4
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)
3
5 3 2
1
0
Try all combinations by either including or excluding a particular coin.
O(2^N), where N is the total number of coins.
Because for every coin we are making two recursion calls.
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.