Given a natural number and different coin values , compute in how many ways it is possible to achieve change by using each value at most twice. Here, two coins with the same value are considered different.
For example, if and the available values are and , then there are three ways to achieve it: , , and also .
Input consists of several cases. Every case begins with and , followed by . Assume , , and that all are different.
For every case print, in lexicographic order, all possible ways to
exactly achieve change
by using each value at most twice. Print every solution with its values
sorted from small to big. In doing that, assume
.
Use “1p” to print
,
etcetera. Print a line with 10 dashes at the end of every case.
A simply pruned backtracking should be enough.
Input
4 2 1 2 400 1 200 400 1 300 5 3 4 2 1 5 5 1 2 3 4 5
Output
4 = 1 + 1p + 2 4 = 1 + 1p + 2p 4 = 2 + 2p ---------- 400 = 200 + 200p ---------- ---------- 5 = 1 + 2 + 2p 5 = 1 + 4 5 = 1 + 4p 5 = 1p + 2 + 2p 5 = 1p + 4 5 = 1p + 4p ---------- 5 = 1 + 1p + 3 5 = 1 + 1p + 3p 5 = 1 + 2 + 2p 5 = 1 + 4 5 = 1 + 4p 5 = 1p + 2 + 2p 5 = 1p + 4 5 = 1p + 4p 5 = 2 + 3 5 = 2 + 3p 5 = 2p + 3 5 = 2p + 3p 5 = 5 5 = 5p ----------