Donat un nombre x i n valors diferents de monedes m1 …mn, de quantes maneres es pot aconseguir canvi x usant cada valor com a molt dues vegades? Considereu diferents dues monedes amb el mateix valor.
Per exemple, si x = 4 i disposem dels dos valors 1 i 2, llavors tenim tres maneres: 1 + 1′ + 2, 1 + 1′ + 2′, i també 2 + 2′.
Entrada
L’entrada consisteix en diversos casos. Cada cas comença amb x i n, seguit de m1 …mn. Suposeu 1 ≤ n ≤ 20, 1 ≤ mi ≤ x ≤ 1000, i que totes les mi són diferents.
Sortida
Per a cada cas, escriviu en ordre lexicogràfic totes les maneres d’aconseguir exactament canvi x usant cada valor com a molt dues vegades. Escriviu cada solució amb els valors de petit a gran. A l’hora d’ordenar els valors, suposeu 1 < 1′ < 2 < 2′ < …. Useu “1p” per escriure 1′, etcètera. Escriviu una línia amb 10 guions al final de cada cas.
Pista
Un backtracking mitjanament espurgat hauria de ser suficient.
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 ----------