Problem Description
In England the currency is made up of pound, £, and pence, p, and there are eight coins in general circulation:
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).
It is possible to make £2 in the following way:
1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
How many different ways can £2 be made using any number of coins?
Analysis
This is a typical problem that demonstrates the use of partitions which can be solved by using dynamic programming. To keep this problem simple: order does not matter, there are always enough coins to make a combination and we’re not looking for the optimal way to make change. This a perfect application for tested algorithms where this problem has been used as an example. As the details and nuances of dynamic programming are somewhat involved; we have provided some links below for a better explanation:
Coin Change – Algorithmist
Dynamic Programming Solution to the Coin Changing Problem
Solution
Runs < 1 second in Python.
target = 200 coins = [1,2,5,10,20,50,100,200] ways = [1]+[0]*target for coin in coins: for i in range(coin, target+1): ways[i] += ways[i-coin] print "Answer to PE31 = ", ways[target]
Comments
- See Problem 76. This problem only wants the number of combinations. It would be a different approach if they wanted a set of combinations.



(20 votes, average: 4.90 out of 5)

This solution is brilliant! My code was over 60 lines long. Thanks for the post.
For 2x pounds the number of ways to make change with coins of 1, 2, 5, 10, 20, 50, 100, and 200 pence is:
Ways(2x) = (63 – 16524x + 121100x^2 + 862127x^3 + 1656620x^4 +1395380x^5 + 543200x^6 + 80000x^7) / 63.
I can compute that pretty quickly even for 10^12 pounds!
[...] Same solution as used for solving Problem 31. [...]