Donat un enter que representa una quantitat d’euros, la descomposició màxima és una llista d’enters (que només poden ser 25, 5, 2 o 1, potser repetits) tals que:
.
De totes les possibles combinacions que compleixen l’anterior condició, ha de ser la que tingui les monedes més grans possibles.
Per exemple, si podria tornar el canvi amb monedes de 2 i 1 euros:
o fins i tot només amb monedes de 5, 2 i 1 euro:
però cap d’aquestes solucions seria correcta, ja que la solució correcta és la que fa servir el màxim de monedes de 5:
Fes una funció canvi amb la següent
declaració:
/*
* Torna el canvi de x en monedes de 25, 5, 2 i 1 euros.
* El canvi cal que contingui les monedes més grans possibles.
* Només una solució recursiva.
*/
void canvi(int x);
Només has d’enviar un fitxer que contingui la funció requerida, amb
els include necessaris i les funcions auxiliars que hauràs
declarat (si n’hi ha), i res més.
Només acceptarem una solució recursiva. Si cal, podeu fer servir funcions auxiliars no recursives, però el gruix del càlcul ha de ser en la funció recursiva.
Enters més grans que zero.
Per a cada enter, la descomposició màxima en monedes de 25,5,2 i 1 euros.
Input
27 37 38 39 12 3
Output
27: 25 2 37: 25 5 5 2 38: 25 5 5 2 1 39: 25 5 5 2 2 12: 5 5 2 3: 2 1