Una llista d’enters és dispersa si la major part dels elements són 0.
Per exemple, la llista és dispersa.
Una llista dispersa es pot comprimir de manera que només emmagatzemi parells () d’aquells elements no nuls. Cal tenir present que el primer parell que emmagatzema conté el nombre d’elements de la llista original.
Donada la llista anterior, la versió comprimida seria:
Implementa una acció RECURSIVA que donada un llista d’enters torna la versió comprimida d’aquesta llista.
La capçalera de la funció és la següent:
// Pre: cert
// Post: torna una llista que conté la llista "l" comprimida.
void comprimir(const list<int> &l, list<pair<int,int>> &compr)
Les funcions i accions que creïs han de treballar només amb llistes
(la classe list de la biblioteca STL). Has de trobar una
solució RECURSIVA i eficient del problema. En
particular, no hi hauria d’haver cap bucle en cap de les
funcions/accions que implementis. Si crees funcions/accions auxiliars,
afegeix-hi les corresponents Precondició (Pre) i
Postcondició (Post). En les crides recursives inclou la
hipòtesi d’inducció (HI) i la funció de
fita (FF).
IMPORTANT: Només cal enviar el procediment demanat; el programa principal serà ignorat.
Input/Output